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.

#1 Abril 03, 2015, 03:30:27 PM Ultima modificación: Abril 03, 2015, 03:44:45 PM por jaimitoes
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...

#2 Abril 03, 2015, 05:45:46 PM Ultima modificación: Abril 03, 2015, 05:51:54 PM por arcangelcaos
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.

#3 Abril 03, 2015, 06:55:46 PM Ultima modificación: Abril 03, 2015, 08:10:06 PM por jaimitoes
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 "

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

#5 Abril 03, 2015, 07:08:12 PM Ultima modificación: Abril 03, 2015, 07:18:14 PM por jaimitoes
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.

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.

Pero entonces lo ultimo que se te queda dibujado son solamente textos? o mas sprites?

#8 Abril 03, 2015, 07:49:31 PM Ultima modificación: Abril 03, 2015, 08:09:23 PM por jaimitoes
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);






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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

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.

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.