Comunidad de diseño web y desarrollo en internet online

Cargando en el mismo sprite de la página parent

Citar            
MensajeEscrito el 29 Abr 2010 10:32 pm
Tengo una página llamada azul.swf que carga automáticamente otra llamada estrella.swf

//CÓDIGO AZUL.SWF

Código ActionScript :

var RECIPIENTE:Sprite = new Sprite();
RECIPIENTE.x = 0;
RECIPIENTE.y = 100;

addChild(RECIPIENTE);

var myLoader:Loader = new Loader();

myLoader.load(new URLRequest("estrella.swf")); 

RECIPIENTE.addChild(myLoader);


la página estrella.swf tiene adentro un botón para llamar otra página que llamé de hexagono.swf. Mi intención es que la hexagono.swf sea cargada en el mismo lugar que fue estrella.swf o sea en RECIPIENTE de la página azul.swf padre de las dos.

//CÓDIGO ESTRELLA.SWF

Código ActionScript :

var main:MovieClip; 
main = MovieClip(parent.parent); //El primer parent es la TL de estrella, el otro la TL de azul

btnHexagono.addEventListener(MouseEvent.CLICK, clickHandlerHexagono); 

 
function clickHandlerHexagono(e:MouseEvent):void 
{ 
   main.myLoader.load(new URLRequest("hexagono.swf")); 
}


El problema es que, aún cuando no suelte ningún error, no está funcionando. Alguien sabe dónde está el error?.

Desde ya muchas gracias. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Abr 2010 10:04 am
Considera poner una función en el timeline principal que cargue lo suqe se le pase como parámetro en el Loader, así la puedes llamar desde cualquier botón sin andar buscando rutas raras

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 2010 10:50 am
Jorge la página parent, seguindo tu sugestión, quedó así

Código ActionScript :

var RECIPIENTE:Sprite = new Sprite();
RECIPIENTE.x = 0;
RECIPIENTE.y = 100;

addChild(RECIPIENTE);

cargar("estrella.swf");

function cargar (archivo:String):void
{
   var myLoader:Loader = new Loader();
   myLoader.load(new URLRequest(archivo));
   RECIPIENTE.addChild(myLoader);
}


y la "hija" así

Código ActionScript :

var main:MovieClip; 
main = MovieClip(parent.parent); 

btnHexagono.addEventListener(MouseEvent.CLICK, clickHandlerHexagono); 

function clickHandlerHexagono(e:MouseEvent):void 
{ 
   main.cargar("hexagono.swf"); 
} 


Pero me está soltando el Error #1034: Falla de coerción. Como este error se produce cuando se llama una función que no existe pienso que mi problema continúa en el camino. Alguna idea?

Desde ya muchas gracias. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 May 2010 10:24 am
Claudio, un loader carga su contenido en "content" por lo que, sin mirar el código puede que le falte un "parent" más.
escribe

Código ActionScript :

trace(parent)
trace(parent.parent)
trace(parent.parent.parent)

para ver dónde está el stage

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 May 2010 07:08 pm
la manera mas facil es como dice Jorge una funcion desde el SWF Main y para saber la ruta de este , podemos pasarle la referencia a una variable por ejemplo

SWF Main :

Código ActionScript :

import flash.display.Sprite;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.display.LoaderInfo;
import flash.display.MovieClip;

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

function loadSWF(path:String):void
{
   var loader:Loader = new Loader();
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
   loader.load(new URLRequest(path));
}

function completeHandler(e:Event):void
{
   var tmpLoaderInfo:LoaderInfo = e.target as LoaderInfo;
   var content:MovieClip = tmpLoaderInfo.content as MovieClip;
   
   content.main = this;
   
   while(container.numChildren) {
      container.removeChildAt(0);
   }
   
   container.addChild(content);
   
}

loadSWF("assets/swfA.swf");


SWF A

Código ActionScript :

import flash.events.Event;
import flash.display.MovieClip;
import flash.display.DisplayObjectContainer;
import flash.display.Loader;
import flash.events.MouseEvent;

this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);

var main:MovieClip;

function addedToStage(e:Event):void
{
   //boton , que cargarar el SWF B
   mLoadSWFB.addEventListener(MouseEvent.CLICK, clickLoadHandler);
}

function clickLoadHandler(e:MouseEvent):void
{
   //esta comprobacion ya no seria necesaria
   /*if(main) {
      main.loadSWF("assets/swfB.swf");
   }*/
   
   main.loadSWF("assets/swfB.swf");
}


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 03 May 2010 07:51 pm
Perfecto Jonathan voy a estudiar un poco mas sobre "cast".

Muchas gracias. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox

 

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