Hola amigos:
He tratado, pero no se me dibuja.
Al dispararse una alarma (cuando se vence su tiempo) quiero que el juego me dibuje una l?nea que parpadea por encima de los dem?s objetos. Para lo cual hay dos posibilidades: dibujo una imagen o sprite con esta linea o bien lo hago con c?digos.
Por favor expl?quenme con detalles y eventos y c?digos c?mo lo har?an. Pueden ilustrarme dibujando una l?nea recta de 0,24 a 300,24. Al dispararse una alarma.
Espero su apoyo. Gracias.
puedes usar draw_line(); pero recuerda que esto solo funciona en un evento draw y no en alarm, create, step, etc., ademas asegurate de que la instancia que la dibuja sea visible
Cita de: flayd4 en Octubre 05, 2010, 06:44:15 PM
puedes usar draw_line(); pero recuerda que esto solo funciona en un evento draw y no en alarm, create, step, etc., ademas asegurate de que la instancia que la dibuja sea visible
He ah? el detalle. No se me ocurre muy claro c?mo uso el evento DRAW si esta linea debe ser pintada cuando se detiene una alarma precisamente.
?Ser? que declaro una variable que se hace cierta cuando se detiene la alarma y desde otro objeto programo el draw_line? Si alguna otra idea, bienvenida sea!!
Gracias
Para dibujar una l?nea solo te hace falta la funci?n draw_line() que debe ir en el evento DRAW. Ten en consideraci?n que al incluir el evento DRAW en un objeto este deja de dibujarse a si mismo, utiliza la funci?n draw_sprite() para contrarrestar esto.
Lo que incluyas en el evento DRAW se dibujar? en el mismo orden de las funciones, por lo que (para tu caso) deber?s colocar la funci?n draw_line() de ?ltimo, y disminuir la depth del objeto que la dibuja.
Para lo de las alarmas puedes usar un reemplazo; algo como esto:
Evento CREATE
[gml]alarmalinea=150; //5 segundos a 30 fps[/gml]
Evento DRAW
[gml]alarmalinea=max(alarmalinea-1,0);
if (alarmalinea==0) draw_line(0,24,300,24);[/gml]
CitarTen en consideraci?n que al incluir el evento DRAW en un objeto este deja de dibujarse a si mismo...
ir?nico, nunca acabe de entender porque Mark lo definio asi, en fin...
CitarHe ah? el detalle. No se me ocurre muy claro c?mo uso el evento DRAW si esta linea debe ser pintada cuando se detiene una alarma precisamente.
las alarmas no se detienen, se ejecutan en tiempos...
El evento Draw es muy similar al evento step,...para profundizar un poco mas este es el orden en como se ejecutan los eventos (seg?n el manual):
Begin step ==> Alarmas ==> Teclado ==> Rat?n ==> Step ==> Colisiones ==> End Step ==> Draw
Los eventos Create, room create, room end etc., se ejecutan cuando son llamados por el sistema.
puedes ejecutar codigo en las alarmas que afecten otros codigos en el evento Draw, como puedes ver en la cadena anterior las alarmas se ejecutan antes que un evento draw, esto es importante ya que aqui puedes definir que y como ejecutar acciones o codigos en Draw, como en el siguiente ejemplo:
En el evento Create de alg?n objeto pones:
[gml]
variable = 0;
[/gml]
En un evento Draw de ese mismo objeto
[gml]
if variable = 1
{
draw_line(0,24,300,24);
}
[/gml]
este codigo evaluara en cada step si la variable "variable" = 1, y cuando asi sea dibujara la linea y para eso puedes auxiliarte con una alarma:
[gml]
objeto.variable = 1;
[/gml]
ahora solo te quedar?a ejecutar la alarma.
Saludos.