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?
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)
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.
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?
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
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]
Que es una surface :c
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