Comunidad de diseño web y desarrollo en internet online

Problema con LoadMovie en AS1 (si, ya sé, perdón :(

Citar            
MensajeEscrito el 14 Nov 2008 02:36 pm
Hola a todos !
Tengo una pregunta que seguramente a muchos les va a molestar porque se trata de AS1.
Creanme que a mi tampoco me agradó hacer el sitio para Flash6 pero necesitaba máxima compatibilidad.
El problema es que tengo una galería, con un movieclip llamado "imagen" donde cargo un .jpg con LaodMovie.
Tengo 4 instancias de este MovieClip imagen (en realidad de un movicliep contenedor llamado Galeria => Galeria1.imagen, Galeria2.imagen, Galeria3.imagen, Galeria4.imagen)
La carga por lo general anda bien, si se espera a que la imagen cargue por completo.
Pero si por ejemplo mientras esta cargando el JPG con LoadMovie dentro de alguna instancia de "imagen", seleccionamos otra foto, entonces empieza a haber problemas.
El jpg que estaba cargando no se detiene, es como que carga los 2 JPG, y en paralelo, sin un orden, entonces en "imagen" termina quedando al final el ultimo JPG cargado.
Asi, si por ejemplo clickeamos una imagen, no dejamos que termine y clckeamos otra, tampoco la dejamos terminar y clickeamos otra, y seguimos haciendo esto, revienta todo.
Se ve como en el movieclip "imagen" van apareciendo y desapareciendo todos los JPGs... y al final es probable que quede cualquiera en lugar del ultimo clckeado.

Espero haberme explicado bien.
Mi duda es si esto es un problema común y si hay forma de evitarlo.


Este es mi codigo para cargar la imagen:

Código :

this.CargarImagen = function(LinkImagen) {


   delete this.fondo.onEnterFrame;
   delete this.imagen.onRollOver;
   delete this.imagen.onRollOut;
   delete this.imagen.onReleaseOutside;
   delete this.imagen.onRelease;

   //this.imagen.unloadMovie();
   this.imagen._visible = false;
   this.imagen.loadMovie(LinkImagen);
   this.barrita._xscale = 0;  //barra de progreso
   this.contador = 0;
   this.fondo.onEnterFrame=function(){ //usamos a "fondo" como enterframe para que no se superponga con otro
       var bl=this._parent.imagen.getBytesLoaded();
             var bt=this._parent.imagen.getBytesTotal();
       if (bl>=bt and bl>20){
         this.contador = this.contador +1; //lo uso para asegurarme que la imagen cargó bien,chequeo 3 veces
                  this._parent.barrita._visible=false;
         this._parent.porcentaje._visible=false;
         this._parent.kb._visible=false;
         if(this.contador>3){  //Si ya cargó muestro, dimensiono, y asigno eventos a la imagen
                   this._parent.imagen._visible = true;
                              this._parent.imagen._width  = 136;
                             this._parent.imagen._height = 84;
              this._parent.imagen.onRollOver = ROLLOVERIMAGEN;
              this._parent.imagen.onRollOut  = ROLLOUTIMAGEN;
              this._parent.imagen.onReleaseOutside  = ROLLOUTIMAGEN;
               this._parent.imagen.onRelease  = RELEASEIMAGEN;
                 updateAfterEvent();
            delete this.onEnterFrame;
         }
         }else{  //si no cargó, muestro la barra de progreso.
                this._parent.barrita._visible=true;
      this._parent.porcentaje._visible=true;
      this._parent.kb._visible=true;
                this._parent.kb.text = Math.floor(bl/1024) + " de " + Math.floor(bt/1024) + " kb";
         this._parent.barrita._xscale=(100*bl/bt)*0.7;
                this._parent.porcentaje.text=(bt>0)?(Math.floor(bl*100/bt)+"%"):"0%";
         }
   }

};




Este metodo se llama cada vez que se selecciona una imagen.
Y antes de llamarlo hago un unloadMovie.

Código :

this.imagen.unloadMovie();
this.CargarImagen(Casa.preview_image);


Espero alguien pueda ayudarme, ya probé de todo y nada me lo resuelve (incluso a veces desaparece el movieclip "imagen" en una de las galerias, como que se hace invisible porque la barrita de descarga del JPG se ve...)

Por enridp100

27 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 16 Nov 2008 04:35 pm
No tienes que utilizar Action Script 1 si quieres utilizar flash player 6, sólo si vas a utilizar flash player 5 o menor es que tienes que hacer esto. Ahora en cuanto a tu duda, describe claramente que deseas hacer, no te entiendo muy bien, tienes varias imagenes que deseas que al presionarlas lea la misma imagen más grande y esto es lo que te da problemas?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 16 Nov 2008 11:01 pm
Hola, gracias por responder!
A ver si me sale explicarlo mejor.
Digamos que tengo un MC donde uso LoadMovie para cargar diferentes JPGs. Cada JPG se carga al presionar un botón (uno distinto para cada JPG).
Pero todos se cargan en el mismo MC, con LoadMovie.
El problema es que si presiono un boton para cargar un JPG, y antes de que este JPG se cargue presiono otro botón, y a su vez otro antes que este también se cargue, y así, entonces en lugar de cargarse con loadMovie solo la ultima imagen correspondiente al ultimo boton, veo "desfilar" dentro del MC todas las imagenes de los botones anteriores, incluso a veces al final ni siquiera queda la última presionada.
Es decir, es como si no se cancelara la carga del JPG anterior, este sigue cargándose y se muestra, a pesar de haber presionado otro botón ya.
Subo un .fla sencillo para que vean el efecto.
http://usuarios.arnet.com.ar/enridp/OV/PruebaLoadMovie.fla
http://usuarios.arnet.com.ar/enridp/OV/PruebaLoadMovie.html

Si tienen conexión muy rapida tal vez no lleguen a verlo porque las imagenes cargan demasiado rapido. Pero si dejan que el % avance de 0 y antes de que llegue a 100 clickean otro boton, entonces ocurre lo que comento arriba.

Alguna sugerencia? como se puede hacer para cancelar la carga de LoadMovie? que cargue unicamente la imagen del ultimo boton clickeado y anule las otras.

Saludos !

Por enridp100

27 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 16 Nov 2008 11:06 pm
Encontré esto recién:
http://www.actionscript.org/forums/archive/index.php3/t-60912.html
Es exactamente mi problema. Pero nadie encontró la solución ahi.
Alguien sabe como cancelar la descarga del LoadMovie?

Saludos !

Por enridp100

27 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 28 Nov 2008 10:16 am
Disculpa la tardanza en responder.
Como te decía, utiliza ActionScript 2 y en vez de utilizar loadMovie utiliza una función que por medio de MovieClipLoader lea las imágenes.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 01 Dic 2008 03:33 pm
Es que pasar todo el proyecto a AS2 a esta altura es practicamente imposible.
Lamentablemente creo que no hay solución, en internet nadie pudo responder como detener la carga de un LoadMovie.
Al parecer una vez que inicia ya no la para nadie (es medio orgásmica la cosa, aunque nada placentera...)

Por enridp100

27 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Dic 2008 07:34 pm
Creo que es más fácil cambiar todo a AS2 que lidiar con los problemas de AS1. Según el código que posteas no es muy difícil ya que utilizas en su mayoría AS2.

Dices que este código se ejecuta cuando seleccionas una imagen:

Código ActionScript :

this.imagen.unloadMovie();
this.CargarImagen(Casa.preview_image);


Cuando te refieres a seleccionar te refieres a presionar o algo por el estilo, postea todo el código respectivo a presionar una imagen. Y si puedes decirme donde se encuentra la función CargarImagen sería de ayuda.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Dic 2008 05:50 am
Hola elchiniet!
El proyecto es mucho más grande de lo que posteé, te aseguro que cambiarlo a AS1 llevaría semanas (sobre todo porque hay mucho codigo gratuito que estoy reutilizando, y es de AS1) :-(
El secreto del asunto me parece está en eso, en poder detener definitivamente la carga de un loadMovie(), no encontré por ningun lado como hacer eso, asique supongo no se puede.
Porque probe hacer un proyecto nuevo, poner solo una pelicula, unos botones, un loadMovie comunacho, cada boton carga una imagen, y pasa lo mismo. Es decir, si cargamos varias imagenes (apretamos varios botones seguidos) sin dejar que carguen las anteriores por completo, esas descargas no se cancelan, y se van acumulando, al final, en el LoadMovie se ven desfilar (a medida que se van descargando) todas las imagenes presionadas.
Otra solución se me ocurre puede ser no compartir el movie, que cada imagen tenga su propia película donde se cargue. Pero esto me va a hacer renegar un tiempo supongo.

Por enridp100

27 de clabLevel



Genero:Masculino  

firefox

 

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