Comunidad de diseño web y desarrollo en internet online

Cargar cuadro especifico despues de cargar swf externo?

Citar            
MensajeEscrito el 04 Oct 2009 11:42 pm
Hola a todos, este es mi primer mensaje en el foro, tengo un problema, estoy creando un sitio con multiples archivos swf, la navegacion debe cargar un cuadro con una etiqueta especifica en algunos archivos, como puedo hacer esto en AS3?.

Esto es lo que por ahora tengo:

Código :

stop();
var my_loader:Loader = new Loader();
addChild(my_loader);

button.addEventListener(MouseEvent.CLICK, clickmouse);

function clickmouse(evt:MouseEvent):void {
     my_loader.load(new URLRequest("a.swf"));
}

my_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, startListener);

function startListener (e:Event):void{
trace("Carga completa");
gotoAndPlay("B");
}


Gracias por leer...

Por Raccoon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2009 04:44 am
hola, ahora la pregunta seria tus botones ya estan en la escena o son una clase , para asi mismo ya sea que armes un XML o crees algunos arrays.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

opera
Citar            
MensajeEscrito el 05 Oct 2009 02:12 pm
Gracias Jonathan por responder, tengo un archivo que funciona como contenedor, en ese archivo se encuentra la navegación, básicamente es un menú desplegable, que esta contenido dentro de un movie clip. Las soluciones que planteas me parecen interesantes, sabes de un tutoriales que traten de esos temas?

Por Raccoon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2009 03:41 pm
Racoon, en e.target tenemos un objeto tipo loaderInfo.
Dentro de un objeto loaderInfo, su propiedad "content" se refiere a lo que hemos cargado.

Así que supongo que lo que quieres hacer es algo como

Código ActionScript :

function startListener (e:Event):void{
   //creo una variable de tipo loaderInfo y la igualo a e.target haciendo una "conversión de cast"
   var loaderInfo:LoaderInfo=e.target as LoaderInfo  //<--sí, la "conversión de cast" es ese "as LoaderInfo"
   //creo una variable de tipo MovieClip y la igualo a laoderInfo.content haciendo una "conversión de cast"
   var pelicula_cargada:MovieClip=loaderInfo.content as MovieClip  //<--¡ACERTASTES! es ese "as MovieClip"
   pelicula_cargada.gotoAndPlay("B")
}


Lo de la "conversión de cast" es una puñeta, pero a ver si lo explico bien esta vez.
El compilador de Flash sólo sabe de e.target que es de tipo "Objeto", así que nosotros "ayudamos" al compilador diciéndole que no es sólo un Objeto, sino que es, además, un LoaderInfo.
Igualmente de la propiedad "content" de un loaderInfo, el compilador sólo sabe que es un DisplayObject. Así que nos toca ayudarle al compilador diciéndole que no sólo es un displayObject, sino que es un MovieClip. Eso es lo que hace que podamos usar el método gotoAndPlay() -que es un método de los objetos MovieClip, pero NO de los objetos DisplayObject.

Uso unas variables auxiliares por facilidad de lectura.

Realmente, la primera conversión de cast no es necesaria, podríamos poner directamente

Código ActionScript :

function startListener (e:Event):void{
   var pelicula_cargada:MovieClip=e.target.content as MovieClip
   pelicula_cargada.gotoAndPlay("B")
}

Si no queremos usar una variable auxiliar, podríamos ponerlo todo en una sola línea, pero, personalmente, tengo costumbre de usar variables

Código ActionScript :

function startListener (e:Event):void{
   (e.target.content as MovieClip).gotoAndPlay("B")
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2009 04:19 pm
Elíseo gracias por tu ayuda, pero desafortunadamente aun no funciona el codigo al ejecutar el codigo aparece esto:

Carga completa
ArgumentError: Error #2109: Frame label B not found in scene Scene 1.
at flash.display::MovieClip/gotoAndPlay()
at test1_fla::MainTimeline/startListener()

Añadí un trace para asegurarme que la carga de la película se efectuó, no me explico porque el archivo contenedor no reconoce la película cargada

Por Raccoon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2009 05:23 pm
se me ocurren dos cosas
1.-sustituye el Event.COMPLETE por un Event.INIT
2.-Revisar si efectivamente tienes un frame cuyo "label" sea "B" en la primera escena de tu .swf (puedes probar con un

Código ActionScript :

(e.target.content as MovieClip).gotoAndPlay(10)   //se iría al frame 10

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2009 06:18 pm
Gracias de nuevo Elíseo seguí tu sugerencia pero no funciona aun, sigue apareciendo el error #2109

Por Raccoon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2009 10:19 pm
Avance algo, ahora tengo un problema, logre cargar el frame, esta carga es secuencial, primero se carga la película y luego me lleva al frame, pero, cuando se carga otra película diferente y quiero navegar a ese frame en especifico no lo permite.
Este es el codigo:

Código :


stop();

var myrequest:URLRequest=new
URLRequest("HomeSonny.swf");
var myloader:Loader=new Loader
myloader.load(myrequest);
stage.addChild(myloader);

//main buttons
menu.nosotros.addEventListener(MouseEvent.CLICK, clickmouse);
menu.islas.addEventListener(MouseEvent.CLICK, clickmouse);

//event listener main buttons

function clickmouse(evt:MouseEvent):void {
     myloader.load(new URLRequest("swf/"+evt.target.name+".swf"));
}

//listener loaded movie

myloader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
var mycontent:MovieClip;
function swfLoaded(e:Event):void{
     stage.addChild(myloader);
     mycontent=MovieClip(e.target.loader.content);
     menu.historia.addEventListener(MouseEvent.CLICK, sub);
}

// never nest named functions
function sub(e:MouseEvent):void{
   mycontent.gotoAndStop("historia");
}



y aparece esto

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at HomeSonny_fla::MainTimeline/subSeccion()

Lo que quiero hacer si es posible, es que cuando se haga click en el botón,este cargue la película y luego me lleve al frame que quiero que debo hacer. ayuuuuuuuuda por favor :shock:

Por Raccoon

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Oct 2009 09:10 am
El error te lo dá en la función "subSeccion" de HommeSonny. De cualquier modo, te SOBRA el addChild de myLoader EN la función swfLoaded (ya lo has añadido anteriormente) ¿será ese el problema? :(

Código ActionScript :

function swfLoaded(e:Event):void{
    //-----------> stage.addChild(myloader); //<--Esto SOBRA, ya está añadido
     mycontent=MovieClip(e.target.loader.content);
     menu.historia.addEventListener(MouseEvent.CLICK, sub);
}

NOTA:Sé que en muchos ejemplos se hace el addChild después de haberse cargado la película. Esto NO es necesario, e incluso hace que el "stage" no esté definido cuando se ha cargado la película. Vamos, que da más problemas añadirlo dentro que fuera (y en ningún modo lo añadiremos dos veces)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Oct 2009 04:40 pm
Elíseo, gracias por tu respuesta, por fin encontré una solución y es esta:


Código :


var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("external.swf");
ldr.load(urlReq);

function loadHandler (e:Event) {

var myClip:MovieClip = e.target.content;
addChild(myClip);

///////////////////////////////////////////////////////////////
function clickSub(e:MouseEvent):void {
myClip.nosotrosmc.gotoAndStop(e.target.name);
//myClip.islasmc.gotoAndStop(e.target.name);

}

// set listeners subButtons
button.addEventListener(MouseEvent.MOUSE_UP, clickSub);

}

// listener
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler);


Espero les sirva como referencia.

Gracias por la ayuda.

Por Raccoon

5 de clabLevel



 

firefox

 

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