Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: arcangelcaos en Abril 03, 2015, 03:24:05 PM

Título: Cosa rara, limpiar pantalla ???
Publicado por: arcangelcaos en Abril 03, 2015, 03:24:05 PM
Hola gente, ya tengo mi peazo juego medio embastado, pero ahora me ha surgido un problema, y no se como hacerlo.
Bien, tengo una room, con varios objeto, y tengo un objeto que es el que hace de tutorial. Pues bien, cuando se crea, desactiva todo los objetos menos este, te enseña en tutorial, muchos evento draw, y cuando llega al ultimo, le digo instance_active_all(); instance_destroy(), pero no desaparece. Los demás objetos están, todo bien, pero no desaparece el draw del objeto tutorial, y no se como hacer que desaparezca. Pensaba que al destruir el objeto, se borraría todo lo que debuja en el evento draw.
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: jaimitoes en Abril 03, 2015, 03:30:27 PM
Si destruyes la instancia que dibuja, deberia desaparecer..... has mirado en el debugger que no tengas el objeto duplicado o algo asi? o si de verdad esta la instancia destruida? Revisa el codigo porque posiblemente por alguna razón no terminas de destruir la instancia.

Si puedes mostrar el código del objeto encargado de dibujar y despues destruirse te podria ayudar...
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: arcangelcaos en Abril 03, 2015, 05:45:46 PM
EVENTO DRAW

draw_set_color(c_black);draw_rectangle(0,0,1290,580,false)
draw_self()
ini_open(global.idioma)
texto = ini_read_string("TutoSkill", string(linea),0)
spr = asset_get_index("sprMensaje")
draw_sprite_ext(spr,-1,20,64,0.63,2,0,c_white,0.9)
if xx >0 and linea <9
{
spr = asset_get_index("sprIndicador")
draw_sprite_ext(spr,-1,xx,yy,1.5,1.5,0,c_white,1)
}
draw_text_ext(16,68,texto,22,270)
ini_close()
draw_text_transformed_colour(20,450,"TOUCH SCREEN",1.5,2,0,150,150,150,150,1)


GLOBAL LEFT BOTTON
linea +=1
if linea = 11
{
instance_active_all();instance_destroy()
}

if linea = 2{xx=947;yy=112}
if linea = 3{xx=(634+147);yy=166}
if linea = 4{xx=(672+147);yy=163}
if linea = 5{xx=(448+147);yy=144}
if linea = 6{xx=(352+147);yy=368}
if linea = 7{xx=(246+147);yy=480}
if linea = 8{xx=(480+147);yy=448}


Bueno, la suma de las xx es porque movi el objeto para que se viera mejor, y para no ponerme a calcular la nueva posición, simplemente sume lo que lo movi, se que es una tontería, pero bueno.

Comprobado que la línea llega a 11 y que ejecuta la instance_destroy(), pero se dibuja lo ultimo y hay se keda. Ya no funciona el GLOBAL LEFT BUTTON, pero se keda todo dibujado como en el ultimo draw. Asi que destruirse se destruye, pero el dibujo no desaparece.

Bueno, ni que decir que cuando se crea, desactiva todo lo demás  instance_deactivate_all(true), y lo que quiero es que cuando se desctruya se active todo lo demás, que esto lo hace, pero como se dibuja lo otro, no se ve nada bien.
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: jaimitoes en Abril 03, 2015, 06:55:46 PM
tienes una view puesta? tienes las casillas activadas clear display buffer with window color  en la room en el room editor?

Tienes mal puesto "instance_active" es "instance_activate_all()"

y sustituye tu codigo en global left por esto (es mas eficiente) :
linea +=1;

switch(linea)
{
case 2 : xx=947;yy=112;break;
case 3 : xx=(634+147);yy=166;break;
case 4 : xx=(672+147);yy=163;break;
case 5 : xx=(448+147);yy=144;break;
case 6 : xx=(352+147);yy=368;break;
case 7 : xx=(246+147);yy=480;break;
case 8 : xx=(480+147);yy=448;break;
case 11: instance_activate_all();
            global.idioma = noone;
            instance_destroy();
            break;
}




los ifs cuando te refieres siempre a la misma variable "linea" tienes que encadenarlos con "else if "
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: arcangelcaos en Abril 03, 2015, 07:04:50 PM
No uso view, y están las 2 casillas marcadas.
Me estoy volviendo loco, y no quiero hacer un cambio de room, por el efecto que se vea el fondo de la anterior room detrás, que queda guapo
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: jaimitoes en Abril 03, 2015, 07:08:12 PM
He editado arriba---


vale otra cosa! he visto que abres un ini que es una "global", si you creo una variable global desde un objeto y lo destruyo, la global permanece osea que voy a editar lo de arriba a ver que tal-

Mucho ojo con las globales.
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: arcangelcaos en Abril 03, 2015, 07:22:35 PM
Gracias, probare, pero te explico. Tengo intención de hacer el juego multiidioma. Al principio del juego se guarda en una global el idioma seleccionado, con el nombre el ini de dicho idioma. Asi cuando tengo que llamar para coger un texto, llamo desde esa global, por lo tanto esa global no se puede, o no se debe modificar durante el juego.
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: jaimitoes en Abril 03, 2015, 07:27:55 PM
Pero entonces lo ultimo que se te queda dibujado son solamente textos? o mas sprites?
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: jaimitoes en Abril 03, 2015, 07:49:31 PM
Prueba esto en Draw en vez de tu codigo:
draw_set_color(c_black);draw_rectangle(0,0,1290,580,false);
draw_self();
ini_open(global.idioma);
var texto = ini_read_string("TutoSkill", string(linea),0);
var mensaje = asset_get_index("sprMensaje");
var indicator = asset_get_index("sprIndicador");
ini_close();



if xx >0 and linea <9
{
draw_sprite_ext(indicator,-1,xx,yy,1.5,1.5,0,c_white,1);
}
else
{
draw_sprite_ext(mensaje,-1,20,64,0.63,2,0,c_white,0.9)
}
draw_text_ext(16,68,texto,22,270);
draw_text_transformed_colour(20,450,"TOUCH SCREEN",1.5,2,0,150,150,150,150,1);





Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: kostra en Abril 03, 2015, 08:26:17 PM
usas un background? sin background a veces da problemas con los draws, aunke uses background color, mejor haclo con una  imagen... si ya usas background... entonces ignora este mensaje xD
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: arcangelcaos en Abril 03, 2015, 08:54:21 PM
Cita de: kostra en Abril 03, 2015, 08:26:17 PM
usas un background? sin background a veces da problemas con los draws, aunke uses background color, mejor haclo con una  imagen... si ya usas background... entonces ignora este mensaje xD

Gracias eso era lo que pasaba, no hay backgroudn, ni color alguno, por lo tanto se queda dibujado lo ultimo que había, no se borra. Poniendo un color de background se kita todo, no es lo que quería, pero bueno. Quería que se viera la room anterior, pero bueno.

Gracias a todos.
Título: Re:Cosa rara, limpiar pantalla ???
Publicado por: jaimitoes en Abril 03, 2015, 09:04:50 PM
Fijate que es lo que te habia dicho al principio pero no tienes puestas views, prueba a quitar el background y poner una view del tamaño de tu room activando las casillas de clear a ver que pasa.