Comunidad de diseño web y desarrollo en internet online

Como hacer un preloader en AS3 sin usar la linea de tiempo?

Citar            
MensajeEscrito el 10 May 2010 09:41 pm
Hola a todos, es la primera vez que hago un post aca, pero me gustaria saber como puedo hacer una precarga del contenido sin usar la forma clasica de la linea de tiempo, de todo en una primer y segundo fotograma, existe una forma de hacer el preloader, desde un package, ya que no estoy haciendo este proyecto con lineas de tiempo sino todo desde el package Main, pero no se como se puede hacer eso, alguien me puede explicar la mejor forma de hacer esto Gracias!.


Julian Cruz

Por juliancruz87

5 de clabLevel



 

Bogotá D.C.

chrome
Citar            
MensajeEscrito el 11 May 2010 07:48 pm
Bueno me imagino que estás usando AS3.
Una opción interesante es usar un componente ProgressBar porque te resuelve muchas cuestiones sin complicarte mucho.
si a la propiedad source le pones el nombre de instancia de un componente UILoader, no necesitas hacer nada más.

si no quieres usar componentes, lo puedes resolver jugando con la propiedad scaleX o scaleY de un MovieClip que haga de barra de progreso.
si divides los bytes cargados / los bytes totales (recibes esa información al ir checando la carga de tu archivo) tendrás una cantidad decimal (0.5 cuando la carga vaya a la mitad por ejemplo).
si asignar ese resultado a scaleX por ejemplo de un MovieClip que contenga un rectángulo, ya se hace el efecto que buscas.

Ésta es la base. De hay salen muchas posibilidades.
El punto de registro del MovieClip puede estar en el centro de la figura y entonces da otro efecto. Puede ser una máscara de otro MovieClip y entonces el segundo se irá descubriendo conforme cargue tu archivo, etc.

Suerte

Por leoncitoamx

Claber

206 de clabLevel

2 tutoriales

 

Puebla, México

firefox
Citar            
MensajeEscrito el 11 May 2010 10:04 pm
hola Gracias por el consejo, ya lo he estado usando, lo que realmente sucede o el verdadero problema, no es como hacer la precarga, sino que funcione en un Package, ya que digamos usando el mismo codigo en una linea de tiempo en el fotograma uno y que lleve al dos funciona, pero no funciona cuando, lo intento hacer todo en el package y que simplemente carge el contenido o lo visualice cuando termine la carga de los bytes. este es el codigo que uso pero no funciona en el package de hecho lo estoy usando asi.

Gracias si me puede ayudar seria genial.

Código ActionScript :

package vwc.com.preloaders{
   //IMPORT FLASH CLASS
   import flash.display.Sprite;
   import flash.display.LoaderInfo;
   import flash.events.Event;
   //IMPORT TWEEN ENGINE GS
   import com.greensock.*;
   import com.greensock.easing.*;
   //CRear CLASe
   public class Precarga extends Sprite{
      //var misc
      private var _LoaderInfo:LoaderInfo;
      private var _loadPercent:Number;
      /***Creacion de la funcion base***/
      public function Precarga(){
         this.addEventListener(Event.ADDED_TO_STAGE,init);
      }//Precarga
      /***funcion de incio***/
      private function init(event:Event):void{
         _LoaderInfo= stage.loaderInfo;
         percent.text="Cargando "+Math.floor(_loadPercent*100)+"%"; // Percent es el nombre del objeto texto a renderizar con el valor del porcentaje.
         progBar.scaleX=0;//progBar es la barra de progreso es un objeto MC
         this.removeEventListener(Event.ADDED_TO_STAGE ,init);
         this.addEventListener(Event.ENTER_FRAME,onCheckLoaded);
      }/***Creacion de la funcion de revision de los bytes cargados***/
      private function onCheckLoaded(event:Event):void{
         _loadPercent=_LoaderInfo.bytesLoaded/_LoaderInfo.bytesTotal;
         progBar.scaleX=_loadPercent;
         percent.text="Cargando "+Math.floor(_loadPercent*100)+"%";
         
         if(progBar.scaleX==1){
            this.removeEventListener(Event.ENTER_FRAME,onCheckLoaded);
            this.dispatchEvent(new Event(Event.COMPLETE));
         }
      }//onCheckLoaded
   }//class
}//package

[BOFH]Cuando publiques código AS enciérralo entre las eqituetas [*as] y [*/as] (son los asteriscos) para mejorar su lectura. The Fricky![/BOFH]

Por juliancruz87

5 de clabLevel



 

Bogotá D.C.

chrome
Citar            
MensajeEscrito el 12 May 2010 03:18 pm
Yo creo que no deberías checar la carga en un evento ENTER_FRAME. Si cargas una imagen o swf externo has de usar una instancia Loader o un componente UILoader. Éstos tienen un evento ProgressEvent.PROGRESS y un evento Event.INIT para cuando se completa la carga. Es más eficiente por el hecho de estar pensado para eso.

En lugar de moverte en la línea de tiempo para mostrar lo que se cargó, podrías manejar la visibilidad de los movieclips que contienen el precargador, lo que se ve antes de cargar tu recurso y el mc que contiene lo que cargaste, ya sea con la propiedad visible de cada uno o con removeChild

Por leoncitoamx

Claber

206 de clabLevel

2 tutoriales

 

Puebla, México

firefox

 

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