Comunidad de diseño web y desarrollo en internet online

Preloader Archivos Multiples - Clase - AS 3.0

Citar            
MensajeEscrito el 05 Nov 2009 03:10 pm
hola a todos, estoy intentando utilizar un preloader para archivos multiples que funciona a través de una clase, la verdad que he hecho muchos intentos, pero soy algo nuevo en la utiliación de clases y solo logro que e de errores y no funcione.

lo que busco es que al terminar la descarga de todos los archivos la clase me lleve a otro fotograma, o cargue solamente uno de los archivos cargados, ya que lo que actualmente sucede es que al terminar de descargar todos los archivos los abre y los muestra en el stage.

aquí les dejo el link donde puede descargar el preloader y todos los archivos:

[url=http://code.google.com/p/as3-multiple-file-preloader/downloads/list][/url]

y el codigo de la clase (son dos clases la verdad):

Código ActionScript :

/*
#   Multiple file preloader example
#   © Michel van der Wal | Team 2.0
#   This file needs 'Preload.as' to compile
*/


package com.team2p0
{
   import flash.display.Sprite;
   import flash.events.Event;
   import flash.events.ProgressEvent;
   
   public class Main extends Sprite
   {
      var pre:Preload;                                    // declare the preload class
      
      public function Main()
      {
         pre = new Preload(["1.jpg","2.jpg","3.jpg"]);            // instantiate and add the files to be preloaded as an array
         pre.addEventListener("preloadProgress", onPreloadProgress);
         pre.addEventListener("preloadComplete", onPreloadComplete); // add listeners for progress
      }
      
      private function onPreloadProgress(e:Event)
      {
         textfield.text = e.target.percLoaded + "% loaded";         //  textfield is a dynamic textfield on the stage
         this.loaderBar.width = e.target.percLoaded * 2;            //   loaderBar is an mc on the stage
      }   

      private function onPreloadComplete(e:Event)
      {
         this.loaderBar.width = 100 * 2;
         textfield.text = "Loading complete";
         pre.removeEventListener("preloadComplete", onPreloadComplete);   // garbage collect
         pre.removeEventListener("preloadProgress", onPreloadProgress);
         trace(pre.objects); // get the loaded objects as an array
         //   showObjects(pre.objects);  // try this to see the loaded images through the function 'showObjects' below
      }
      private function showObjects(o:Array) // ESTA ES LA FUNCION QUE HABRIA QUE CAMBIAR.
      {
         var stageWidth:uint = stage.stageWidth - 10;
         var offSet:uint = 10;
         for (var i:int=0; i<o.length; i++)
         {
            var imageWidth:Number = stageWidth / o.length - (offSet / o.length);
            var ar:Number = o[i].height / o[i].width;
            var imageHeight:Number = imageWidth * ar;
            o[i].width = imageWidth;
            o[i].height = imageHeight;
            o[i].x = imageWidth * i + offSet;
            o[i].y = offSet;
            addChild(o[i]);
         }
      }
   }
}



la segunda clase:

Código ActionScript :

/*
#   Multiple file preloader: Preloader class
   
#   Preloads multiple swfs and/or images
#   Accepts an array with strings containing the files to be loaded
#   Dispatches a progress event when loading is in progress
#   Returns the total precentage loaded with getter method 'Preloader.percLoaded'
#   Dispatches a complete event when total loading is complete
#   Returns an array with objects with the loaded files
   get the array through getter method 'Preloader.objects'
   
#   instantiate like this:

#   var pre:Preload = new Preload(["1.jpg","2.jpg","3.jpg"]);
#   pre.addEventListener("preloadProgress", onPreloadProgress);
#   pre.addEventListener("preloadComplete", onPreloadComplete);

*/

package
{   
   import flash.display.Sprite;
   import flash.display.Loader;
   import flash.events.Event;
   import flash.events.ProgressEvent;
   import flash.net.URLRequest;
   
   public class Preload extends Sprite
   {
      public var objectsArray:Array = new Array();      // holds the the loaded files
      public var pLoaded:int = 0;                     // defaults the loaded percentage to 0
      private var itemsArray:Array = new Array();         // holds all the items to be loaded
      private var totalItems:int;                     // holds the total items to be preloaded
      private var currItem:int = 1;                  // defaults the current preloaded item to 1
      
      public function Preload(_itemsArray:Array)
      {
         itemsArray = _itemsArray;
         totalItems = _itemsArray.length;
         loadOne(currItem - 1, itemsArray);      // load the first item
      }
      
      private function loadOne(what:int, _itemsArray:Array):void
      {
         var ldr:Loader = new Loader();
         ldr.load(new URLRequest(_itemsArray[what].toString()));
         ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onInternalProgress);
         ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onInternalComplete);
      }
   
      private function onInternalProgress(e:Event):void
      {
         var temp:int = Math.ceil((((e.target.bytesLoaded / e.target.bytesTotal)*100 * currItem) / totalItems));
         if (temp > pLoaded) {
            pLoaded = temp;      // avoid the precentage to drop
         }
         trace(pLoaded);
         dispatchEvent(new Event("preloadProgress")); // call the parent class with a progress update
      }
      
      private function onInternalComplete(e:Event):void
      {
         objectsArray.push(e.target.content);   // add a loaded object to the objects array
         currItem += 1;                     // increment the current item to be loaded
         if (objectsArray.length == totalItems) {
            e.target.removeEventListener(ProgressEvent.PROGRESS, onInternalProgress);   // garbage collect
            e.target.removeEventListener(Event.COMPLETE, onInternalComplete);
            dispatchEvent(new Event("preloadComplete"));   // when all objects are loaded, call the parent class
         } else {
            loadOne(currItem - 1, itemsArray);   // load the next one
         }
         trace("complete");
      }
      
      public function get percLoaded():int
      {
         return pLoaded;         // returns the loaded percentage of all files to be preloaded
      }
      
      public function get objects():Array
      {
         return objectsArray;   // returns the loaded files as an array
      }
      
   }
   
}



bueno, si alguien ha trabajado con este preloader, o sabe como cambiar la funcion para abrir los archivos cargados, le agradeceria infinitamente su ayuda, ya que llevo mucho tiempo intentandolo y ya no se como hacerlo.

saludos.

rodrigo.

Por shifla

0 de clabLevel



 

safari
Citar            
MensajeEscrito el 06 Nov 2009 10:57 am

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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