Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Dibujar texto sin que se salga del rectangulo [SOLUCIONADO]  (Leído 1039 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Johann

  • Las cosas como son!
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 778
  • Mensajes: 888
  • Agradecido: 125 veces
  • Sexo: Masculino
  • First Class Soldier... 10 años en CGM, 5 como mod
    • Ver Perfil
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?
« última modificación: Diciembre 14, 2018, 08:24:36 pm por Johann »

Cita de: Fenris78
Si 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: Calio
Somos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado FridaFlowers

Respuesta #1 en: Diciembre 10, 2018, 05:18:13 am
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".

 
Los siguientes usuarios dieron las gracias a este tema: Johann, FernandoNavarro


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2475
  • Mensajes: 2.038
  • Agradecido: 89 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #2 en: Diciembre 10, 2018, 11:47:50 am
Yo al estilo kostrón, pongo un sprite encima con menos depth y apañao! xD (en serio que hago eso)

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado FridaFlowers

Respuesta #3 en: Diciembre 10, 2018, 11:14:07 pm
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


 
Los siguientes usuarios dieron las gracias a este tema: Johann


Desconectado Johann

  • Las cosas como son!
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 778
  • Mensajes: 888
  • Agradecido: 125 veces
  • Sexo: Masculino
  • First Class Soldier... 10 años en CGM, 5 como mod
    • Ver Perfil
Respuesta #4 en: Diciembre 14, 2018, 08:27:50 pm
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: Fenris78
Si 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: Calio
Somos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.
 
Los siguientes usuarios dieron las gracias a este tema: FridaFlowers


Desconectado Johann

  • Las cosas como son!
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 778
  • Mensajes: 888
  • Agradecido: 125 veces
  • Sexo: Masculino
  • First Class Soldier... 10 años en CGM, 5 como mod
    • Ver Perfil
Respuesta #5 en: Enero 02, 2019, 11:53:33 pm
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: Fenris78
Si 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: Calio
Somos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.
 


Desconectado Jucarave

  • Ganador Proyecto Nexo
  • Beta-tester
  • Adicto
  • *
  • Puntos: 431
  • Mensajes: 488
  • Agradecido: 27 veces
  • Sexo: Masculino
  • De regreso con un nuevo proyecto
    • Ver Perfil
    • Jucarave Games
Respuesta #6 en: Enero 03, 2019, 12:29:27 am
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.

 


Desconectado Johann

  • Las cosas como son!
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 778
  • Mensajes: 888
  • Agradecido: 125 veces
  • Sexo: Masculino
  • First Class Soldier... 10 años en CGM, 5 como mod
    • Ver Perfil
Respuesta #7 en: Enero 03, 2019, 02:39:23 am
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:

if not surface_exists(recuadro) {
    recuadro = surface_create(960, 480);
}

Cita de: Fenris78
Si 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: Calio
Somos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.
 


Desconectado jhgv

  • Habitual
  • *
  • Puntos: 46
  • Mensajes: 23
  • Sexo: Masculino
    • Ver Perfil
Respuesta #8 en: Septiembre 25, 2019, 11:34:18 pm
Que es una surface :c

 


Desconectado FridaFlowers

Respuesta #9 en: Septiembre 27, 2019, 12:09:27 am
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.

 
Los siguientes usuarios dieron las gracias a este tema: jhgv


Desconectado jhgv

  • Habitual
  • *
  • Puntos: 46
  • Mensajes: 23
  • Sexo: Masculino
    • Ver Perfil
Respuesta #10 en: Octubre 03, 2019, 09:53:41 pm
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