Y hablando de este tema, me gustaria saber otras opiniones sobre cómo hacer
esto de la mejor manera, ya que esta es una forma que aprendí a base de
palos y nunca he visto ejemplos prácticos buenos para construir la
navegación principal de una web (estamos hablando de oop claro).

Un saludo

> -----Mensaje original-----
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En
> nombre de xleon
> Enviado el: lunes, 26 de noviembre de 2007 19:49
> Para: 'Lista dedicada a Actionscript'
> Asunto: Re: [ASNativos] efecto de carga de secciones
> 
> 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:
> > > asnativos@5dms.com> 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
> -----------------------------------------------------
> 
> 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