Comunidad de diseño web y desarrollo en internet online

Funciones que se duplican al recargar

Citar            
MensajeEscrito el 02 Dic 2006 11:54 am
Hola, estoy haciendo un Tetris que consta de una pelicula principal con este código:

Código :

////////////////////////////////////////////////////////////////
#include "As/Tetris08.as"
////////////////////////////////////////////////////////////////
tecla = new Object();
tecla.onKeyDown = function(){
   if(Key.isDown(37)){
   MoverIzquierda();
   }else
   if(Key.isDown(39)){
   MoverDerecha();
   }
   if(Key.isDown(90)){
   Rotar();
   }
   if(Key.isDown(40)){
   MoverFicha();
   }
}
Key.addListener(tecla);


y un archivo .as en el que están todas las funciones que usa el Tetris. Cuando cargo el Tetris a través de otro swf principal (por ejemplo al subirlo a mi web), funciona bien la primera vez, pero si luego cambio de sección y vuelvo al Tetris, al pulsar la tecla izquierda por ejemplo, la ficha avanza dos posiciones en vez de una, y si pulso "Z" para que gire, lo hace dos veces.....
He probado a cargar el .as desde la pelicula principal, e incluso a incluir todo el codigo dentro de la pelicula Tetris. Tambien he intentado eliminar el listener de tecla al cargar el Tetris, pero sigue pasando lo mismo........

¿Alguna idea?
¿Alguna idea?

Por db

63 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Dic 2006 12:31 pm
Qué extraño....
Intenta borrar todas las variables y funciones que estés usando con delete para volver a crearlas al ir a ese fotograma.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 02 Dic 2006 06:18 pm
Las variables en las funciones ¿son locales? si no lo son, fijate porque el código puede estar seteando variables que creías que caducaban al final de la función.

Por si no lo sabés se declaran locales con var antes del nombre de variable :wink:

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 03 Dic 2006 06:45 pm
BUenas, ya se lo que pasaba........

Por un lado habia un setInterval que no se eliminaba con el unloadMovie, y al volver a cargar la película se duplicaba.
Por otro lado el listenner tampoco se eliminaba al descargar la pelicula, y si se volvía a cargar se duplicaba. Vamos, que si pulsabas izquierda se reproducia dos veces......
No se si me he explicado.
De momento lo he solucionado eliminando el listenner y el interval cada vez que cargue una pelicula del menú, pero me gustaría que se eliminaran automáticamente cada vez que hago un unloadMovie (es decir, hacer que solo sean válidos para la película en cuestión). Alguien sabe como hacerlo????

Por db

63 de clabLevel



 

opera
Citar            
MensajeEscrito el 03 Dic 2006 06:47 pm

Código :

for (a in _root){
_root[a].removeMovieClip()
delete _root[a]
}

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 04 Dic 2006 07:01 am
Aunque debiera, el setInterval se queda en memoria aunque se descargue la película que lo contenía.
Cosas de Flash !!!

Un saludo

Por Pachi

8 de clabLevel



Genero:Masculino  

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.