Foros del Web » Creando para Internet » Flash y Actionscript »

precargas multiples en actionscript 3

Estas en el tema de precargas multiples en actionscript 3 en el foro de Flash y Actionscript en Foros del Web. Hola, alguien sabe como cargar varios archivos swf a un archivo swf principal? la idea es que en la barra de carga se muestre el ...
  #1 (permalink)  
Antiguo 13/12/2009, 11:41
 
Fecha de Ingreso: junio-2009
Mensajes: 39
Antigüedad: 11 años, 4 meses
Puntos: 0
Busqueda precargas multiples en actionscript 3

Hola, alguien sabe como cargar varios archivos swf a un archivo swf principal? la idea es que en la barra de carga se muestre el proceso entero de carga y no que sea uno por vez, desde ya gracias, Cecilia.
  #2 (permalink)  
Antiguo 13/12/2009, 16:50
Avatar de Diegoazul  
Fecha de Ingreso: mayo-2007
Ubicación: { Dash Berlin }
Mensajes: 1.879
Antigüedad: 13 años, 5 meses
Puntos: 67
Respuesta: precargas multiples en actionscript 3

Crea una clase que tenga dos parametros, el primero que sea la ruta del .swf ó .jpg para cargar, el segundo el destino Precarga(ruta:String,destino_mc:MovieClip), aquí te explican como hacer una precarga:

http://newmovieclip.wordpress.com/20...script-30-way/

tú hazla función ó clase.
__________________
{ Flash }
  #3 (permalink)  
Antiguo 13/12/2009, 18:08
 
Fecha de Ingreso: junio-2009
Mensajes: 39
Antigüedad: 11 años, 4 meses
Puntos: 0
Información Respuesta: precargas multiples en actionscript 3

Gracias Diego, pero en el link que me pasas solo explica la carga de un solo archivo swf o jpg, yo necesito saber como hacer la carga de varios archivos ya sean swf , jpg , etc. Como hago para realizar todas esas cargas y que la barra de progreso sea para todas esas cargas y no para una por vez.
  #4 (permalink)  
Antiguo 14/12/2009, 06:13
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 13 años
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
  #5 (permalink)  
Antiguo 15/12/2009, 06:23
 
Fecha de Ingreso: junio-2009
Mensajes: 39
Antigüedad: 11 años, 4 meses
Puntos: 0
Busqueda Respuesta: precargas multiples en actionscript 3

Hola Gracias por el codigo, lo estuve probando carga todo bien pero cuando simulo la descarga me aparece un numero que va de 0 a 6075, osea en vez de llegar a 100 me muestra este numero.
Aparte no entiendo mucho cuando se llama a una funcion local como a localFunc.LPrecarga() siendo que no fue definida, bueno espero me puedas aclarar la duda, desde ya gracias.Cecilia.
  #6 (permalink)  
Antiguo 15/12/2009, 10:36
 
Fecha de Ingreso: junio-2009
Mensajes: 39
Antigüedad: 11 años, 4 meses
Puntos: 0
De acuerdo Respuesta: precargas multiples en actionscript 3

Hola probando y viendo lo pude solucionar por si a alguien le interesa ,defini una variable intermedio en la parte del progreso de la carga:
De lo contrario se iva sumando lo cargado mas lo cargado ya registrado por eso lo que se iva cargando era mayor a la carga total y no eran coherentes los valores, bueno espero a alguien le sirva, Saludos.

function localProgress(event:ProgressEvent):void {

if (total) {

BytesTotal= BytesTotal + event.bytesTotal;
anterior= event.bytesLoaded;
total=false;
}
BytesLoaded= BytesLoaded + (event.bytesLoaded - anterior);

anterior= event.bytesLoaded;
globalProgress();
}
  #7 (permalink)  
Antiguo 15/12/2009, 10:45
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 13 años
Puntos: 51
Respuesta: precargas multiples en actionscript 3

hola de nuevo he probado el código de nuevo y no me falla XD bueno sera que tal bes una de las rutas del archivo que quieras cargan no este bien, pero es ese caso deja de funcionar por completo el script

detodos modos com el ejemplo que te he dado si remplazas esta linea

tex.text=String((bytLoad/bytTotal)*100)

por esta

tex.text=String(Math.round((bytLoad/bytTotal)*100))

evitas los números decimales

de todos modos te boy a preparar un ejemplo grafico para que veas mejor como utilizarlo


con respecto a la funcion localFunc.LPrecarga(); si que esta declarada pero no ejecuta nada este escript esta pensado para ejecutar funciones declaradas antes de que se ejecute la carga como lo hacen las funciones globalFunc.GPrecarga(); como lo muestra el ejemplo


Código PHP:
var fun=cargas.GobalFunction
fun
.GPrecarga=muestraTexto
fun
.GProgreso=muestraCarga
fun
.GResultado=quitaTexto 
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #8 (permalink)  
Antiguo 15/12/2009, 10:53
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 13 años
Puntos: 51
Respuesta: precargas multiples en actionscript 3

XDXD pues tienes razón ahora que lo veo es lo lógico es que la suma sea mayor a los byts cargados lo que no entiendo es por que me funcionaba siempre XDXDXD


bueno gracias a tu ayuda mejorare el script XDXD
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #9 (permalink)  
Antiguo 16/12/2009, 13:32
 
Fecha de Ingreso: junio-2009
Mensajes: 39
Antigüedad: 11 años, 4 meses
Puntos: 0
Información Respuesta: precargas multiples en actionscript 3

Hola, si localmente el codigo que me pasaste funciona pero cuando simulas la descarga en flash control-probar pelicula y luego ver- simular descarga ahi cambia.
El tema es que localmente la carga es instantanea pero al estar subido el archivo al servidor la bajada es lenta y ahi se nota la diferencia.
Igualmente subi como yo lo hice a mi servidor y aveces la carga retrosede , es raro. Muestra por ejemplo 25% y al rato 15% , luego sigue..Alguien tiene alguna idea de que puede estar pasando? gracias otra vez.Cecilia.
  #10 (permalink)  
Antiguo 21/12/2009, 12:17
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 13 años
Puntos: 51
Respuesta: precargas multiples en actionscript 3

jeje perdonar por contestar ahora pero estado liado si el problema es emn la suma de valores bueno creo que lo he pulido mas al codigo seria asi

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:Array=new Array
        var 
BytesTotal:Array=new Array
        var 
localFunc:Array=new Array
        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],i);
                
BytesLoaded.push(0)
                
BytesTotal.push(0)
                
localFunc.push(temFunc())
            }
        }
        private function 
temFunc():Object{
            var 
func:Object={LPrecarga:function(){} ,LProgreso:function(l:Number,t:Number){},LResultado:function(l:Loader){}}
            return 
func
        
}
        private function 
local(dir:String,id:int):void {
            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[id].LPrecarga();
            }

            function 
localProgress(event:ProgressEvent):void {
                
BytesTotal[id]=event.bytesTotal
                BytesLoaded
[id]=event.bytesLoaded
                localFunc
[id].LProgreso(event.bytesLoaded,event.bytesTotal);
                
globalProgress();
            }

            function 
localLoadResult(event:Event):void {
                
localFunc[id].LResultado(loader);
                
cont++;
                if (
cont == dirs.length) {
                    
globalLoadResult();
                }
            }
        }
        private function 
globalPreloader():void {
            
globalFunc.GPrecarga();
        }
        private function 
globalProgress():void {
            var 
ByL:Number=0
            
var ByT:Number=0
            
for(var i:int=0;i<dirs.length;i++){
                
ByL+=BytesLoaded[i]
                
ByT+=BytesTotal[i]
            }
            
globalFunc.GProgreso(ByL,ByT);
        }
        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():Array {
            return 
localFunc;
        }
        public function 
set LocalFunction(param:Array):void {
            
localFunc=param;
        }
    }

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #11 (permalink)  
Antiguo 27/12/2009, 22:06
Avatar de annirami  
Fecha de Ingreso: septiembre-2009
Ubicación: Lima, Perú
Mensajes: 53
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: precargas multiples en actionscript 3

hola Lynxcraft,
encontré este tema de precargas multiples que justo estaba buscando, pero veo que esta hecho con package e import, del que no entiendo mucho. He estado intentando hacerlo funcionar, pero no me sale, no se si me estoy equivocando en el orden, es que no entiendo como conectar ambos archivos.
Podrías decirme como enlazar ambos archivos, por favor.
saludos.
  #12 (permalink)  
Antiguo 28/12/2009, 07:30
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 13 años
Puntos: 51
Respuesta: precargas multiples en actionscript 3

un ejemplo obviamente las imágenes no te las incluyo las tendrás que cambiar las rutas por las que te haga falta

http://www.megaupload.com/?d=5SO1WA17
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #13 (permalink)  
Antiguo 29/12/2009, 09:27
Avatar de annirami  
Fecha de Ingreso: septiembre-2009
Ubicación: Lima, Perú
Mensajes: 53
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: precargas multiples en actionscript 3

Gracias por darme el archivo, con el orden que yo lo hacía jamás me iba a salir.
Había escrito un tema que es éste:[URL="http://www.forosdelweb.com/f16/abreviar-codigo-cargar-swf-externos-as3-764000/"]http://www.forosdelweb.com/f16/abreviar-codigo-cargar-swf-externos-as3-764000/[/URL]
preguntando como podía cargar varios archivos a la vez. Había modificado un código que cargaba al principio un archivo externo, si funciona, pero para cargar varios, tenía que repetir varias veces var loader:Loader:new Loader()....var loader2:...y así...
Ahora voy a probar con tu código... a ver que tal
saludos...y gracias de nuevo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:25.