Comunidad de diseño web y desarrollo en internet online

Preloader no funciona con swf específico

Citar            
MensajeEscrito el 28 Abr 2008 11:25 pm
Estoy cargando un archivo externo con este código

// Declaraciones e inicializaciones

var container:Sprite = new Sprite ();
var cargador:Loader = new Loader();

container.x = 270;
container.y = 120;

addChild ( container );
container.addChild( cargador );

cargador.load( new URLRequest ( "1.swf" ) );

// Oidores de evento

cargador.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS, cargador_onProgress );

// Funciones de evento

function cargador_onProgress ( evento:ProgressEvent ):void
{
var porcentaje:Number = Math.floor( evento.bytesLoaded * 100 / evento.bytesTotal );
txtPorcentaje.text = porcentaje.toString();
mcBarra.scaleX = porcentaje / 100;
}
Lo extraño es que el preloader funciona con varios swfs pero hay uno específico con el cual él comienza a contar los bits y cuando llega al 1% ese swf externo aparece y el resto del preloader continua contando en cuanto el resto del archiva va seindo mostrado. Alguien ya vió esto?

Desde ya muchas gracias

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 Abr 2008 02:03 am
No veo que tu precarga haga más que mostrar el porcentaje, es decir si cargo una animación de 700 frames se arrancará sin más, a menos que le haysa agregado un stop al principio y un play al terminar la carga. ¿Estás manipulando de alguna forma las pelis cargadas?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Abr 2008 01:06 pm
Jorge: el código que utilizo normalmente para cargar un swf es este

stop();

addEventListener(Event.ENTER_FRAME, carregando) ;

function carregando(e:Event):void
{
var carregados = Math.round(stage.loaderInfo.bytesLoaded);
var total = Math.round(stage.loaderInfo.bytesTotal);
var porcentagem:Number = Math.floor ( carregados * 100 / total );
txtPorcentagem.text = porcentagem.toString() + "%";
mcBarra.gotoAndPlay( porcentagem );
if (carregados == total)
{
removeEventListener(Event.ENTER_FRAME, carregando);
play();
}
}

este código queda en la Scene1 y coloco la película en la Scene2.

El problema que tengo aqui es el siguiente, mi index es una página en blanco que tiene un container que va a recibir el resto de las páginas. Este index tiene el código que te mostré que lo único que hace es llamar a la primera página ("1.swf") que es una introducción con un botón Entrar.
La pregunta es esta: cómo hago desde el index para dar uma play en la 1.swf?
Debería ser algo así:

if (carregados == total)
{
removeEventListener(Event.ENTER_FRAME, carregando);
1.swf.play();
}

solo que, claro esto no funciona.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 Abr 2008 01:27 pm
La condición:

if (carregados >= total && total>4)

Luego

cargador.content.play()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Abr 2008 01:33 pm
Jorge: la línea cargador.content.play() no funciona

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 Abr 2008 01:40 pm
Prueba con gotoAndPlay

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Abr 2008 02:30 pm
Jorge: nada, realmente no entiendo como una cosa que debería ser tan simple es tan complicada. Y no encuentro en ningun lado información sobre caminos en AS3.

El ayuda del Flash diciendo que es el root de archivos cargados con Load o LoadBytes().

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 Abr 2008 02:43 pm
Bueno, lo primero que lo pruebes con un Loader utilizando el callback init. Copio el ejemplo de la ayuda, lo puedes adaptar al timeline:

Código :

package {
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.URLRequest;

    public class LoaderInfoExample extends Sprite {
        private var url:String = "Image.gif";

        public function LoaderInfoExample() {
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            var request:URLRequest = new URLRequest(url);
            loader.load(request);
            addChild(loader);
        }

        private function initHandler(event:Event):void {
            var loader:Loader = Loader(event.target.loader);
            var info:LoaderInfo = LoaderInfo(loader.contentLoaderInfo);
            trace("initHandler: loaderURL=" + info.loaderURL + " url=" + info.url);
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("ioErrorHandler: " + event);
        }
    }
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Abr 2008 02:49 pm
Bueno, lo primero que lo pruebes con un Loader utilizando el callback init. Copio el ejemplo de la ayuda, lo puedes adaptar al timeline:

Código :

package {
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.URLRequest;

    public class LoaderInfoExample extends Sprite {
        private var url:String = "Image.gif";

        public function LoaderInfoExample() {
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            var request:URLRequest = new URLRequest(url);
            loader.load(request);
            addChild(loader);
        }

        private function initHandler(event:Event):void {
            var loader:Loader = Loader(event.target.loader);
            var info:LoaderInfo = LoaderInfo(loader.contentLoaderInfo);
            trace("initHandler: loaderURL=" + info.loaderURL + " url=" + info.url);
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("ioErrorHandler: " + event);
        }
    }
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Abr 2008 05:58 pm
Jorge: salió el error Packages cannot be nested ( paquetes no pueden ser anidados ).

Vamos subir un poco mas alto para entender mejor el problema. Este aplicativo tiene unicamente dos páginas la 1 y la 2. Mi razonamiento es el siguiente por favor corregime si estoy equivocado.

1 - El index es una página en blanco que tiene un container en ( 0,0) y un Loader con el cual voy a cargar la página 1;
2 -La página 1 tiene unicamente un botón entrar con el que mando cargar la página 2 en el mismo container.

La idea de esto es que las páginas no vayan quedando unas encima de las otras sino que se vayan substituyendo.

Por vafor decime si esto es correcto.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 Abr 2008 06:25 pm
Si me dices que has puesto package en el timeline mejor pasemos a modo corta y pega para no hacer el thread interminable
Primero quita el play de donde lo pusiste, luego agrega esto

Código :

cargador.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
function initHandler(event:Event):void {
      var loader:Loader = Loader(event.target.loader);
     loader.content.play()
 }


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Abr 2008 01:03 am
Jorge esto es lo que consegui hasta ahora:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onComplete, false, 0, true );
loader.load( new URLRequest( "1.swf" ) );
addChild( loader );
function onComplete( event:Event ):void
{
var content:MovieClip = MovieClip( event.target.content );
content.play();
}

Falta solo un detalle para resolver mi problema. Mi Loader está dentro de um container de esta forma:

var cnt:Sprite = new Sprite ();
addChild ( cnt );

cnt.addChild( loader );

sabes como debería cambiar el código?

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Abr 2008 09:40 am
La diferencia entre el COMPLETE y el INIT es que en el primero ha sido cargado pero el código no ha sido inicializado, lo que si ha ocurrido en el segundo. Supongo que será una anuimación o algo así y eso no afecta, pero si dependieras de código te podrías llevar sorpresas. ¿Cual es el problema de que esté dentro de un contenedor?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Abr 2008 11:26 am
Disculpa Jorge este código está funcionando aun cuando el Loader está dentro del Container es que yo había hecho uno parecido y no funcionaba para ese caso.
A pesar de que este código está bien organizado y funciona no lo hace con un swf específico que tengo aqui. Realmente no entiendo que es lo que sucede con él. Es una animación simple toda hecha em TL con un botón Entrar en el final de ella. El preloader carga el 1% y la dispara. Mientras la animación se va desarrollando el preloader la va acompañando. Como te dije eso pasa unicamente para este swf. Se me están agotando los caminos para resolver esto.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Abr 2008 11:31 am
A lo mejor este swf usa assets externos que debe cargar ... míralo detenidamente de adelante para atrás, identifica la diferencia con el resto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Abr 2008 12:00 pm
Jorge: es una animación simple con solo algunos Motion Tween.

La coloqué on line para que puedas ver en esta dirección:

http://www.jucamaximo.com

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox

 

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