Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/12/2009, 06:13
Avatar de Lynxcraft
Lynxcraft
 
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: precargas multiples en actionscript 3

hola
mira tengo esta funcion de multiplecargas a ver si te sirve XDXD


Código PHP:
package com.cfx.net{
    
import flash.display.Loader;
    
import flash.display.LoaderInfo;
    
import flash.net.URLRequest;
    
import flash.events.Event;
    
import flash.events.ProgressEvent;

    public class 
MultipleCarga {
        var 
loaders:Array=new Array  ;
        var 
dirs:Array=new Array  ;
        var 
BytesLoaded:Number=0;
        var 
BytesTotal:Number=0;
        var 
localFunc:Object={LPrecarga:function(){} ,LProgreso:function(l:Number,t:Number){},LResultado:function(l:Loader){}};
        var 
globalFunc:Object={GPrecarga:function(){} ,GProgreso:function(l:Number,t:Number){},GResultado:function(l:Array){}};
        var 
cont:int=0;
        public function 
MultipleCarga():void {
        }
        public function 
addDir(dir:String):void {
            
dirs.push(dir);
        }
        public function 
load():void {
            
globalPreloader();
            for (var 
i:int=0dirs.lengthi++) {
                
local(dirs[i]);
            }
        }
        private function 
local(dir:String):void {
            var 
total:Boolean=true;
            var 
loader:Loader=new Loader  ;
            
loader.contentLoaderInfo.addEventListener(Event.OPEN,localPreloader);
            
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,localProgress);
            
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,localLoadResult);
            
loader.load(new URLRequest(dir));
            
loaders.push(loader);

            function 
localPreloader(event:Event):void {
                
localFunc.LPrecarga();
            }

            function 
localProgress(event:ProgressEvent):void {
                if (
total) {
                    
BytesTotal+= event.bytesTotal;
                    
total=false;
                }
                
BytesLoaded+= event.bytesLoaded;
                
localFunc.LProgreso(event.bytesLoaded,event.bytesTotal);
                
globalProgress();
            }

            function 
localLoadResult(event:Event):void {
                
localFunc.LResultado(loader);
                
cont++;
                if (
cont == dirs.length) {
                    
globalLoadResult();
                }
            }
        }
        private function 
globalPreloader():void {
            
globalFunc.GPrecarga();
        }
        private function 
globalProgress():void {
            
globalFunc.GProgreso(BytesLoaded,BytesTotal);
        }
        private function 
globalLoadResult():void {
            
globalFunc.GResultado(loaders);
        }
        public function 
get GobalFunction():Object {
            return 
globalFunc;
        }
        public function 
set GobalFunction(param:Object):void {
            
globalFunc=param;
        }
        
        public function 
get LocalFunction():Object {
            return 
localFunc;
        }
        public function 
set LocalFunction(param:Object):void {
            
localFunc=param;
        }
    }

y para ejecutarlo seria mas o menos asi
Código PHP:
import com.cfx.net.*
var 
cargas:MultipleCarga=new MultipleCarga()
cargas.addDir("img_1.jpg")
cargas.addDir("img_2.jpg")
cargas.addDir("img_3.jpg")
cargas.addDir("img_4.jpg")
cargas.addDir("img_5.jpg")



var 
tex:TextField=new TextField()
function 
muestraTexto(){
    
addChild(tex)
}

function 
muestraCarga(bytLoad:Number,bytTotal:Number){
    
tex.text=String((bytLoad/bytTotal)*100)
}
function 
quitaTexto(todos:Array){
    
//removeChild(tex)
    
for(var i:int=0;i<todos.length;i++){
        
addChild(todos[i])
    }
    
}

var 
fun=cargas.GobalFunction
fun
.GPrecarga=muestraTexto
fun
.GProgreso=muestraCarga
fun
.GResultado=quitaTexto

cargas
.load() 
también sirve para hacer preloads individuales en ves de utilizar las funciones globales tienes que utilizar las locales

var fun=cargas.LocalFunction
fun.LPrecarga=muestraTexto
fun.LProgreso=muestraCarga
fun.LResultado=quitaTexto


ten en cuenta que estas funciones se repiten por cada elemento cargado asi que para poder utilizarlas correctamente tendrías que aplicar otro tipo de modificaciones pero ese no es tu caso creo que con el ejemplo de arriba te servirá
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft