Por cierto, los eventos "onTransicion" y "onFinTransicion" me han sido muy
útiles para varias cosas, entre ellas, inutilizar un menú principal mientras
se está entrando o saliendo de una sección.

> -----Mensaje original-----
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En
> nombre de xleon
> Enviado el: lunes, 26 de noviembre de 2007 19:41
> Para: 'Lista dedicada a Actionscript'
> Asunto: Re: [ASNativos] efecto de carga de secciones
> 
> Te lo podría explicar con mas detalle pero con el código creo que lo verás
> sencillito:
> Te pongo mi clase "Semáforo" y luego la clase "Pantalla" (lo mismo que una
> sección), que es genérica. Normalmente no hace gran cosa. La utilizo para
> extender de ella, pero por lo menos tiene implementados los métodos de
> mostrar() y ocultar(). ¿por qué tiene implementado un sistema de eventos
al
> mostrar y ocultar? Pues eso me sirve para poder hacer animaciones con
> twinings, etc de cada sección y una vez terminado avisamos al semáforo de
> que esto ha ocurrido...
> 
> 
> /**
> * Esta clase controla la aparición y desaparición de pantallas o
secciones.
> Vínculando estas de manera que solo se puede mostrar una al mismo tiempo
> * Si se le ordena mostrar una pantalla, primero ocultará la que se
mostraba
> anteriormente esperando su evento "onOcultado", y luego mostrará la nueva
> *
> * @author Diego Ponce de León
> * @version 0.1
> */
> import net.xleon.utils.Delegate;
> import com.gskinner.events.GDispatcher;
> 
> class net.xleon.ui.logica.Semaforo {
> 
>       private  var dispatchEvent : Function;
>       public  var addEventListener : Function;
>       public  var removeEventListener : Function;
>       public var removeAllEventListeners : Function;
> 
>       private var pantallas:Array;
> 
>       public function Semaforo(_pantallas:Array) {
>               GDispatcher.initialize(this);
>               pantallas = new Array();
>               if(_pantallas){
>                       for(var i:Number=0; i<_pantallas.length; i++){
>                               if(add_pantalla(_pantallas[i]) == false )
> trace("Semaforo: no se puede agregar la pantalla
> "+_pantallas[i].toString()+" mas de una vez");
>                       }
>               }
>       }
>       public function add_pantalla(_pantalla:Object):Boolean{
>               var pantalla_agregada:Boolean = true;
>               for(var i:Number=0; i<pantallas.length; i++){
>                       if(pantallas[i] == _pantalla) pantalla_agregada =
> false;
>               }
>               if(pantalla_agregada) pantallas.push(_pantalla);
>               return pantalla_agregada;
>       }
>       public function tracear_pantallas():Void{
>               trace("===== Pantallas de la aplicación ===============");
>               for(var i:Number=0; i < pantallas.length; i++){
>                       trace(pantallas[i].toString()+" => mostrandose =
> "+pantallas[i].mostrandose_ahora);
>               }
>               trace("===== Fin de Pantallas ===============");
>       }
>       public function mostrar_pantalla(_pantalla:Object):Void{
>               //trace("mostrando pantalla");
>               dispatchEvent({type:"onTransicion"});
>               if(get_mostrandose_ahora()!= null){
>                       get_mostrandose_ahora().removeAllEventListeners();
>                       _pantalla.addEventListener("onMostrado",
> Delegate.create(this, this.finTransicion));
> 
> get_mostrandose_ahora().addEventListener("onOcultado",
> Delegate.create(_pantalla, _pantalla.mostrar) );
>                       get_mostrandose_ahora().ocultar();
>               }
>               else {
>                       _pantalla.addEventListener("onMostrado",
> Delegate.create(this, this.finTransicion));
>                       _pantalla.mostrar();
>               }
>       }
>       private function finTransicion():Void{
>               dispatchEvent({type:"onFinTransicion"});
>       }
>       public function ocultar_actual():Void{
>               get_mostrandose_ahora().removeAllEventListeners();
>               get_mostrandose_ahora().ocultar();
>       }
>       public function get_mostrandose_ahora():Object{
>               for(var i:Number=0; i<pantallas.length; i++){
>                       if(pantallas[i].mostrandose_ahora==true) {
>                               return pantallas[i];
>                       }
>               }
>               return null;
>       }
>       public function getPantallas():Array{
>               return pantallas;
>       }
>       public function toString():String{
>               return "Semaforo";
>       }
> }
> 
> 
> 
> 
> /**
> * Clase con las funciones básicas de una pantalla.
> * Crear vista, mostrar, ocultar
> * @author Diego Ponce de León
> * @version 0.1
> */
> import com.gskinner.events.GDispatcher;
> //import net.xleon.utils.Delegate;
> 
> class control.pantallas.Pantalla {
>       private  var dispatchEvent : Function;
>       public  var addEventListener : Function;
>       public  var removeEventListener : Function;
>       public var removeAllEventListeners : Function;
> 
>       private var scope:MovieClip;
>       public var vista:MovieClip; // es una instancia en el escenario de
> ui.pantallas.Configuracion, aunque diga MovieClip, sirve igual
>       public var vinculacion:String; // nombre de vinculación en la
> libreria, de la ui que será manejada por esta pantalla
>       public var mostrandose_ahora:Boolean = false;
>       private var se_habia_mostrado:Boolean = false;
>       /*
>       * @scope: el ámbito donde vamos a atachar la pantalla
>       * @vinculacion: el nombre de clip vinculado en la libreria
> perteneciente a esta pantalla
>       */
>       public function Pantalla(_scope:MovieClip, _vinculacion:String) {
>               GDispatcher.initialize(this);
>               scope = _scope;
>               vinculacion = _vinculacion;
>               set_ui();
>       }
>       /* Coloca solo una vez la ui en el scope */
>       private function set_ui():Void{
>               vista = scope.attachMovie(vinculacion, vinculacion,
> scope.getNextHighestDepth(),{_visible:false});
>       }
>       public function mostrar(terminado:Boolean):Void{
>               if(terminado) {
>                       mostrandose_ahora = true;
>                       se_habia_mostrado = true;
>                       dispatchEvent({type:"onMostrado"});
>                       //trace("mostrada: "+toString())
>                       return;
>               }
>               vista._visible = true;
>               // Animaciones para mostrar y luego:
>               mostrar(true); // logicamente esto habrá que llamarlo desde
> otro método o por ejemplo un callback de un twining
>       }
>       public function ocultar(terminado:Boolean):Void{
>               if(terminado){
>                       vista._visible = false;
>                       mostrandose_ahora = false;
>                       dispatchEvent({type:"onOcultado"});
>                       //trace("ocultada: "+toString())
>                       return;
>               }
>               // Animaciones para ocultar y luego:
>               ocultar(true); // logicamente esto habrá que llamarlo desde
> otro método o por ejemplo un callback de un twining
>       }
>       public function toString():String{
>               return "control.pantallas.Pantalla";
>       }
> }
> 
> 
> 
> > -----Mensaje original-----
> > De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En
> > nombre de sergio arranz
> > Enviado el: domingo, 25 de noviembre de 2007 23:37
> > Para: Lista dedicada a Actionscript
> > Asunto: Re: [ASNativos] efecto de carga de secciones
> >
> >
> > Buenas, lo que tengo es parecido a lo que dice xleon, tengo las
secciones
> en la
> > biblioteca y las cargo con un con un for, todo eso me va bien, pero no
> entiendo bien lo
> > de la clase semaforo que me indicas, estoy un poco pez todavia en el
tema
> de las
> > clases, como bien dices lo veo un poco lioso. > From: [EMAIL PROTECTED]>
> To:
> > [email protected]> Date: Sun, 25 Nov 2007 23:12:00 +0100> Subject: Re:
> > [ASNativos] efecto de carga de secciones> > Yo hace mucho lo hacia así.
> Pero un dia
> > descubrí que es mucho más facil> incluir todas las secciones en la
> biblioteca en clips.
> > Cada sección tiene> los contenidos principales, excepto cosas que pesen
> mucho, que
> > precargo al> entrar en la sección. > Luego tengo una clase "semáforo"
que
> controla la
> > aparición y desaparición de> todas las secciones. Cada sección extiende
de
> una clase
> > "Sección" que cumple> las funciones básicas. La función "mostrar()"
anima
> la sección
> > y la> precarga. Cuando esta fase termina manda un evento que es recogido
> por la>
> > clase "semáforo" avisando de que ya está cargada y mostrandose. > La
clase
> principal
> > de la aplicación instancia cada una de las secciones nada> más
inicializar
> y las oculta,
> > dejándolas preparadas para mostrarse u> ocultarse más adelante.> Parece
un
> lío
> > todo esto pero es la forma más sencilla que he encontrado a lo> largo de
> muchos
> > quebraderos de cabeza.> > > -----Mensaje original-----> > De: asnativos-
> > [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En> > nombre de
> Fede
> > Rivas> > Enviado el: domingo, 25 de noviembre de 2007 19:54> > Para:
Lista
> > dedicada a Actionscript> > Asunto: Re: [ASNativos] efecto de carga de
> secciones> >
> > > > Buenasss. Pues bien, depende un poco de como tengas montadas las> >
> cosas.
> > Yo es un efecto que suelo usar, y lo hago de la siguiente forma :> > > >
> Uso el tipico
> > swf como "base", en el cual tengo el clip vacío donde> > voy a ir
cargando
> todas las
> > secciones. Esto lo controla el preloader> > de turno, que en mi caso son
> un par de
> > clases y un clip. Solo uso un> > preloader, el cual se encarga de todo,
y
> es el que
> > controla la carga /> > descarga. Cuando cargo un swf nuevo, el propio
> preloader,
> > hace> > desaparecer el anterior. Aqui tienes dos opciones, una hacer
una>
> >
> > "desaparicion rapida", en plan facil, le metes un tween al alpha> >
> mismamente, o
> > bien hacerte una "desaparcion ordenada" donde los> > elementos se
marchan
> > ordenadamente, segun te interese.> > > > Si eliges la opcion dificil, la
> animacion es
> > "a mano" y yo tengo por> > norma que dure muy pocos frames ( unos 50 en
> una peli
> > de 30fps ),> > suelo colocar un frame etiquetado, para dar un
gotoAndPlay
> directo>
> > > ahi. De esta forma ( durando pocos frames ), hay una ventaja> >
> indirecta. Cuando
> > llamas al loader para cargar la peli nueva, haces> > justamente la
> descarga, y por
> > poco que pese la nueva seccion, tardara> > unos segundos en aparecer
para
> "pisar"
> > la antigua, tiempo mas que> > suficiente para que la animacion de salida
> terminara.
> > Por el> > contrario, si la salida es muy lenta, pasa que el loader pisa
al
> swf> >
> > antiguo con el nuevo, sin haber terminado la desaparicion, pudiendo> >
> apreciar
> > claramente el "corte". Es viable, pero mucho mas follonero,> > tener que
> notificar al
> > loader del termino de la descarga, para iniciar> > la otra carga.> > > >
> Bueno, solo
> > es una idea de planteamiento, pero asi la suelo hacer.> > > > Si tienes
un
> problema
> > ya mas concreto con algo, nos comentas. :)> > > > Salu2!> > > > Fede.> >
>
> > El
> > 25/11/2007, a las 14:20, sergio arranz escribió:> > > > >> > > Buenos
días
> lista, os
> > quería comentar si me podríais indicar un poco> > > como hacer un efecto
> al cargar
> > las secciones de una web. El efecto> > > es tipico pero no se como
> hacerlo: cuando
> > cargas una sección te> > > aparecen los elementos de esa sección, pero
> cuando
> > cargas o pinchas> > > en otro boton para que se abra otra sección los
> elementos de
> > la> > > sección anterior desaparecen con un efecto de movimiento u otro,
> y> > >
> > una vez desaparecidos los elementos de la sección anterior aparecen> > >
> los de la
> > nueva sección. Si me podríais indicar como se puede hacer,> > > o si hay
> algún
> > enlace para saber como hacerlo paso por paso os lo> > > agradecería.> >
>>
> > >>
> > > > Saludos.> > >
> > _________________________________________________________________>
> >
> > > Tecnología, moda, motor, viajes,…suscríbete a nuestros boletines> > >
> para estar
> > a la última> > >> >
> >
> http://newsletters.msn.com/hm/maintenanceeses.asp?L=ES&C=ES&P=WCMaintenan
> > > > ce&Brand=WL&RU=http%3a%2f%2fmail.live.com> > >
> ---------------------------
> > --------------------------> > > ASNativos> > > www.5dms.com> > >
> > subscripciones/desubscripciones> > > http://asnativos.5dms.com> > >
> --------------
> > ---------------------------------------> > >> > > > > >
> -----------------------------------
> > ------------------> > ASNativos> > www.5dms.com> >
> > subscripciones/desubscripciones> > http://asnativos.5dms.com> >
> --------------------
> > ---------------------------------> > > > No virus found in this incoming
> message.> >
> > Checked by AVG Free Edition.> > Version: 7.5.503 / Virus Database:
> 269.16.6/1150 -
> > Release Date:> 24/11/2007 17:58> > > > No virus found in this outgoing
> message.>
> > Checked by AVG Free Edition. > Version: 7.5.503 / Virus Database:
> 269.16.6/1150 -
> > Release Date: 24/11/2007> 17:58> > > > >
> --------------------------------------------
> > ---------> ASNativos> www.5dms.com> subscripciones/desubscripciones>
> > http://asnativos.5dms.com>
> -----------------------------------------------------
> > _________________________________________________________________
> > Tecnología, moda, motor, viajes,…suscríbete a nuestros boletines para
> estar a la
> > última
> >
> http://newsletters.msn.com/hm/maintenanceeses.asp?L=ES&C=ES&P=WCMaintenan
> > ce&Brand=WL&RU=http%3a%2f%2fmail.live.com
> > -----------------------------------------------------
> > ASNativos
> > www.5dms.com
> > subscripciones/desubscripciones
> > http://asnativos.5dms.com
> > -----------------------------------------------------
> >
> > No virus found in this incoming message.
> > Checked by AVG Free Edition.
> > Version: 7.5.503 / Virus Database: 269.16.7/1151 - Release Date:
> 25/11/2007 16:24
> >
> 
> No virus found in this outgoing message.
> Checked by AVG Free Edition.
> Version: 7.5.503 / Virus Database: 269.16.7/1151 - Release Date:
25/11/2007
> 16:24
> 
> 
> 
> 
> -----------------------------------------------------
> ASNativos
> www.5dms.com
> subscripciones/desubscripciones
> http://asnativos.5dms.com
> -----------------------------------------------------
> 
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.503 / Virus Database: 269.16.7/1151 - Release Date:
25/11/2007 16:24
> 

No virus found in this outgoing message.
Checked by AVG Free Edition. 
Version: 7.5.503 / Virus Database: 269.16.7/1151 - Release Date: 25/11/2007
16:24
 



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

Responder a