Trabajo con Flash 8 (si, ya me voy a actualizar, este es el último que hago) y AS2.
Estoy desarrollando un programa para correr desde un Cd es por esto que tengo una pantalla principal en un ejecutable de Flash y llamo a archivos .swf con botones.
El código de llamada es el siguiente:
Código :
function llamada(peli:String){ pelicula=peli; _root.clip_cargador.removeMovieClip(); createEmptyMovieClip("clip_cargador",_root.getNextHighestDepth()); //le das una ubicación dentro de la peli principal para colocarlo donde de la gana clip_cargador._x = 60; clip_cargador._y = 30; clip_cargador.loadMovie(pelicula); //_root.desactivabotonera(); }
Básicamente se crea un Movie Clip en el nivel más alto y se llama a un SWF.
Bien, el problema se me está generando en todos los SWF a los que les he puesto un código para poder avanzar con la flecha Derecha y la Flecha Izquierda del teclado al pasar unas fotos.
Tengo una pantalla que muestra unas fotos supongamos de la 1 a la 100 y avanzo al mirarlas con la tecla Derecha y la Izquierda del teclado.
El código que hace esto es el siguiente:
Código :
var tecladerecha = new Object(); Key.addListener(tecladerecha); tecladerecha.onKeyDown = function(){ if (Key.isDown(Key.RIGHT)){ n++; conta=conta+1; _root.b_ante.enabled=true; if (n>max){ n=max; conta=dif; _root.b_sigui.enabled=false; } else{ var loader:MovieClipLoader = new MovieClipLoader(); var listener:Object = new Object(); listener.onLoadInit = function(mc:MovieClip) { mc._width=800; mc._height=600; var bitmap:BitmapData = new BitmapData(mc._width, mc._height, true); mc.attachBitmap(bitmap, 1,"auto", true); bitmap.draw(mc); mc._width=640; mc._height=480; }; loader.addListener(listener); loader.loadClip(path+n+".jpg",ff_contenedor.conte); } } }
El código de la tecla izquierda es similar.
La variable n es la que me va a indicar el número de la foto por ejemplo: foto+n.jpg que luego es cargada en un contenedor para ver la foto.
Cuando lo ejecuto en el SWF anda bárbaro, va retrocede las imágenes y las adelanta sin problemas.
El código para cerrar este SWF es el siguiente:
Código :
this.b_salir.onPress=function(){ _root.unloadMovie(this); }
El problema surge cuando ejecuto el archivo .exe principal creado en Flash y llama a este archivo SWF con el primer código que escribí al principio. Lo ejecuta bien (lo carga dentro del .exe con un MovieClip, puedo avanzar sin problemas con las flechas izquierda y derecha y todo anda perfecto.
Pero cuando cierro el SWF con el código cerrar que puse a lo último de este post, se destruye (o eso creo yo) el MovieCLip cargador y sigo trabajando con el .exe
Ahora, si vuelvo a llamar al archivo SWF (sin haber cerrado el .exe), se carga nuevamente este archivo en el cargador pero al avanzar para ver las fotos, es como que esa variable llamada "n" ya tiene cargado un valor porque al posicionarme en la foto 1, cuando quiero avanzar con la tecla derecha, me salta a la 3 sin mostrar la 2; si avanzo nuevamente, salta a la 5 y así sucesivamente, va saltando de 1 en 1. Si cierro el SWF y lo abro nuevamente, la avanza de 2 en 2 ( de la foto 1 pasa a la 4).
Bueno, espero haber sido claro con la explicación aunque es difícil poder explicar lo que me pasa.
Si se les ocurre algo, me avisan.
Yo probé de colocar en la función de salida del SWF el siguiente código pero no me funcionó:
Código :
this.b_salir.onPress=function(){ n=0; _root.Key.removeListener(teclaizquierda); _root.Key.removeListener(tecladerecha); delete n; delete teclaizquierda; delete tecladerecha; _root.unloadMovie(this); }
Muchas gracias a todos