Diciembre 10, 2018, 04:49:50 AM Ultima modificación: Diciembre 14, 2018, 08:24:36 PM por Johann
Tengo un texto que se dibuja sobre un rectangulo dibujado con draw_roundrect_ext.
¿Como hago para que al hacerle scroll al texto (moverlo hacia arriba y abajo), cuando se salga del area del rectangulo, no se dibuje por fuera?
¿Tal vez con una surface?
Me ayudan?
Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.

Te dejo los pasos explicados, de como lo haría yo:
Bueno, inicialmente (1) deberías crear una surface más grande que el texto, lo suficiente para cubrir el texto que se sale por los bordes.

(2) Tendrias que quitar la parte del recuadro para obtener el negativo(3). Esto se hace facilmente con:

draw_set_blend_mode(bm_subtract)
draw_roundrect_ext(...)

Luego deberías crear una nueva surface (4) donde dibujarías el texto normal.
Y repetirías el paso de recorte(5):
draw_set_blend_mode(bm_subtract)
draw_surface(surface_roja, 0, 0)

(6)Fin

Bueno, como dicen en las peliculas: "en mi cabeza sonaba bien".

Yo al estilo kostrón, pongo un sprite encima con menos depth y apañao! xD (en serio que hago eso)
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

De hecho, estuve pensando, si todavía quieres utilizar surfaces, creo que tengo una manera mucho mas facil de hacerlo.

Simplemente creas una surface con el tamaño del rectangulo y dibujas el texto encima, si el texto se sale de la surface simplemente no se dibujará.

Luego bastaría simplemente dibujar la surface.
Te dejo un ejemplo adjunto XD


Queda muy elegante en cuadro con el texto de esa manera, gracias por el ejemplo
Ya estoy preparando la aplicación para publicarla,apenas esté publicada la pongo en el foro para que vean de que se trataba.
Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.

Estaba todo tan bonito....
Hasta que se me durmió el celular en ese room y  :'(
Cuando lo desperté, un error me dice que no encuentra la surface, y si no sale el error se queda congelado hasta que pide cerrar la app

Como es una surface entiendo que esto pase pero, ¿como lo evito?
Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.

Puedes almacenar la surface en un sprite, este se conserva durante todo el juego (no olvides borrarlo cuando no lo necesites)

https://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sprites/sprite_create_from_surface.html

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


Resulto ser un bug del GM
https://bugs.yoyogames.com/view.php?id=15485
Siempre me causa gracia que cuando a alguien no le sale algo le echa la culpa al programa XD

Lo arreglé creando la surface si de casualidad se desaparece:

[gml]
if not surface_exists(recuadro) {
    recuadro = surface_create(960, 480);
}
[/gml]
Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.


Cita de: jhgv en Septiembre 25, 2019, 11:34:18 PM
Que es una surface :c
Una surface es un recurso dinámico. Esto quiere decir que no se crea en el editor normalmente como lo haría un sprite, un sonido, un background. Sino que se crea durante la ejecución del juego y para ello necesitas usar código.
Y a efectos prácticos una surface es un recurso que se utiliza para realizar tareas de dibujo. Normalmente, para hacer dibujos personalizados que GameMaker no soporta con funciones nativas, por ejemplo, dibujar una estrella o dibujar una dona, o incluso hacer efectos más complejos, como ser,  el típico efecto de estar abajo del agua o de ola de calor donde todo se desfigura.
Se pueden lograr efectos muy buenos con surfaces, el problema es el costo en memoria, y a lo mejor si el efecto es muy complejo, al llevar muchos pasos, el costo en procesamiento. Todo dependería si necesita hacerse en cada step.
Otro inconveniente que suele presentar el uso de Surfaces, es que cómo todo se hace mediante código es difícil visualizar el resultado en sí sino hasta que todo está imlpementado. Aún así se utiliza mucho.

Cita de: FridaFlowers en Septiembre 27, 2019, 12:09:27 AM
Una surface es un recurso dinámico. Esto quiere decir que no se crea en el editor normalmente como lo haría un sprite, un sonido, un background. Sino que se crea durante la ejecución del juego y para ello necesitas usar código.
Y a efectos prácticos una surface es un recurso que se utiliza para realizar tareas de dibujo. Normalmente, para hacer dibujos personalizados que GameMaker no soporta con funciones nativas, por ejemplo, dibujar una estrella o dibujar una dona, o incluso hacer efectos más complejos, como ser,  el típico efecto de estar abajo del agua o de ola de calor donde todo se desfigura.
Se pueden lograr efectos muy buenos con surfaces, el problema es el costo en memoria, y a lo mejor si el efecto es muy complejo, al llevar muchos pasos, el costo en procesamiento. Todo dependería si necesita hacerse en cada step.
Otro inconveniente que suele presentar el uso de Surfaces, es que cómo todo se hace mediante código es difícil visualizar el resultado en sí sino hasta que todo está imlpementado. Aún así se utiliza mucho.

Hola, ya eh aprendido un poco mas de las surfaces ¿son lo mismo que un evento draw pero con capas cierto? entonces... ¿como harias lo de las olas de calo? pliss ayudame :")   




o hare una pregunta así etiquetandote :v okno