Buenas,

Me he tomado la molestia de rehacer tu código y así de paso ilustrar  
como una gestión de flujo por código es más optima que una gestión de  
flujo con fotogramas.

No digo con esto que dibujar en fotogramas sea malo, solo que no me  
gusta gestionar el flujo por fotogramas, que es distinto.

Y bueno, el problema de tu código no era por eso, podría haber  
funcionado con los mismos cambios en fotogramas, pero así (por lo  
menos a mi) resulta más legible.

Por otro lado, siempre que necesites sincronizar cargas si usas  
MovieClipLoader en lugar de loadMovie tendrás menos problemas.


Saludos!





     var numActual:Number=0;   // Identificador numérico para movernos  
de un MC a otro
     var lista:Array;  // Lista de películas de MovieClips que se cargarán
     var listaMC:Array;  // Lista con los objetos MC para poder acceder a ellos
     lista = new Array("Images/prueba1.swf","Images/prueba2.swf");
     listaMC = new Array(lista.length);

        function cargaSiguienteMC() {
                listaMC[numActual] = 
_root.createEmptyMovieClip("banner"+numActual,  
_root.getNextHighestDepth());

                var mcLoader:MovieClipLoader = new MovieClipLoader();
                var listener:Object = new Object();
                listener.owner = this;
                listener.onLoadInit = function(mc:MovieClip) {
                        mc.stop();
                        mc._visible = false;
                        this.owner.numActual++;
                        if(this.owner.numActual < this.owner.lista.length){
                                this.owner.cargaSiguienteMC();
                        }else{
                                this.owner.empiezaRotatorio();
                        }
                }
                mcLoader.addListener(listener);
                mcLoader.loadClip(lista[numActual], listaMC[numActual]);
        }

        function empiezaRotatorio() {
                numActual = 0;

                listaMC[numActual]._visible = true;
                listaMC[numActual].gotoAndPlay(1);

                _root.onEnterFrame = function(){
                        if(listaMC[numActual]._currentframe == 
listaMC[numActual]._totalframes){
                                listaMC[numActual].stop();
                                listaMC[numActual]._visible = false;
                                numActual++;
                                listaMC[numActual].gotoAndPlay(1);
                                listaMC[numActual]._visible = true;
                                if(numActual==lista.length){
                                        terminaRotatorio();
                                }
                        }
                }
        }

        function terminaRotatorio() {
                delete(_root.onEnterFrame);
        }


        cargaSiguienteMC();








Quoting Daniel Portilla <[EMAIL PROTECTED]>:

> Hola amigos, me han encomendado hacer un rotatorio de banners pero me está
> dando muchos quebraderos de cabeza. No os voy a complicar la vida contando
> todas las intentonas que he hecho. Os lo resumo a ver si me podéis ayudar.
>
> Tengo un array con los nombres de los .swf que se cargan en el rotatorio,
> hago un bucle para hacer el loadmovie de los banners, que se cargan muy
> rápido porque son 2 y pequeños (aunque luego serán más).
>
> Mi pregunta es, una vez están cargados en un MovieClip,  ¿cómo los
> sincronizaríais uno con otro, para que cuando termine uno empiece el otro y
> así de forma cíclica? y ¿cómo haríais el cambio de uno a otro? Yo ahora
> mismo lo que hago es que no se vean, porque intenté ponerle _visible a false
> pero me daba problemas.
>
> Ahora mismo lo tengo así montado pero me da el problema de que cuando llega
> al último fotograma empieza a reproducir el último fotograma del siguiente
> banner.
>
> Escena 1
>    Acciones para Fotograma 1
>       var i:Number=0;   // Identificador numérico para movernos de un MC a
> otro
>       var lista:Array;  // Lista de películas de MovieClips que se cargarán
>       var listaMC:Array;  // Lista con los objetos MC para poder acceder a
> ellos
>       lista = new Array("Images/prueba1.swf","Images/prueba2.swf");
>       listaMC = new Array(lista.length);
>       for (var x:Number=0; x<lista.length; x++){
>          createEmptyMovieClip("banner"+x, x+5);
>          listaMC[x] = _root["banner"+x];
>          loadMovie(lista[x], listaMC[x]._name);
>          listaMC[x]._xscale = 0.1;
>          listaMC[x]._yscale = 0.1;
>          listaMC[x].gotoAndStop(0);
>       }
>       listaMC[0]._xscale = 100;
>       listaMC[0]._yscale = 100;
>       listaMC[0].play();
>       play();
>    Acciones para Fotograma 2
>       play();
>    Acciones para Fotograma 3
>       if(_root["banner"+i]._currentframe == _root["banner"+i]._totalframes){
>          _root["banner"+i]._xscale=0.1;
>          _root["banner"+i]._yscale=0.1;
>          _root["banner"+i].stop();
>          nextFrame();
>       } else {
>          prevFrame()
>       }
>    Acciones para Fotograma 4
>       i = (i+1)%lista.length;
>       _root["banner"+i]._xscale=100;
>       _root["banner"+i]._yscale=100;
>       _root["banner"+i].play();
>       gotoAndPlay(2);




-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------

Responder a