Comunidad de diseño web y desarrollo en internet online

Instanciar objetos desde una biblioteca de un SWF externo

Citar            
MensajeEscrito el 17 Jun 2008 06:48 pm
Gracias a todos por el esfuerzo. Tengo este problema: quiero acceder a los componentes de una biblioteca de un SWF externo, es decir, desde el SWF1 quiero añadir al escenario, objetos de un SWF2.

Entiendo que con el código cargaCuentos cargo el SWF externo que quiero y cuando lo tengo completo llamo a swfOK. Lo que no se es como hacer un addChild de esos componentes del SWF2 y si deben de estar en el escenario de ese SWF2 como instancias. Independeientemente de como sean, no conozco cómo invocarlas desde SWF1.

Gracias de nuevo

Código :

function cargaCuentos(){
   var loadCuento:URLLoader = new URLLoader;
   var URLCuento:URLRequest = new URLRequest(cuento);

   loadCuento.dataFormat = URLLoaderDataFormat.TEXT;
   loadCuento.addEventListener(Event.COMPLETE,swfOK);
   loadCuento.load(URLCuento);
};

function swfOK(event:Event):void{
   var i;
   for(i=2; i<6; i++){
      addChild(loadCuento.data.pag3); //ESTO ES A LO QUE NO SE ACCEDER
   };
}


Editado por eldervaz

Por gronsi

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Jun 2008 07:04 pm
El addChild agrega una instancia nueva de cualquier descendiente de displayObject a la lista de objetos en el escenario, algo así

Código :

myLoader:Loader = new Loader()
addChild(myLoader)


Luego si haces un MC en la biblioteca usa la clase que le hayas puesto para instanciarlo (el antiguo attachMovie)

Código :

algunClip:new myCustonClip()
addChild(algunClip)


Tu ruta hace referencia a un objeto que está metido dentro del MC cargado, ¿que es eso a lo que hace referencia?

Jorge

Por favor usa etiquetas

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Jun 2008 10:38 pm

Código :

import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;

var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("miSWF.swf");
ldr.load(urlReq);
ldr.contentLoaderInfo.addEventListener(Event.INIT, loaded);

function loaded(event:Event):void
{
       var pag_02:Sprite = event.target.content.pag2; // Y ESTO ES LO QUE DEBERIA CAMBIAR
   addChildAt(pag_02,0);
}

Hasta aquí funciona perfectamente. pag2 es una instancia del SWF2 que cargo desde el SWF1. Ahora necesito que se comporte como una clase con una serie de propiedades para detectar doble clic, etc. Y he hecho algo así

Código :

package 
{
   import flash.display.*
   import flash.events.*;

   public class Pag extends Sprite{    
     
      public function Pag(event){ //ESTO ES LO QUE NO SE HACER
         doubleClickEnabled = true;
         addEventListener(MouseEvent.CLICK, clickHandler);
         addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler);
         addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
         addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
         addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
         addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
         addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
       
      } //ETC ETC ETC


var pag_02:Sprite = event.target.content.pag2; // Y ESTO ES LO QUE DEBERIA CAMBIAR


NO TENDRIA QUE SER DE LA CLASE SPRITE SINO DE LA CLASE Pag pero no se como hacerlo para seguir instanciando lo que ya funcionaba.

Gracias de nuevo

Usa etiquetas CODE y no escribas en mayúsculas, que es sinónimo de gritar ;)

Por gronsi

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Jun 2008 10:45 pm
Haces un import de la clase Page en tu peli principal y luego:

Código :

addChild(new Page())


Ahora el constructor de la clase espera un event (que no tiene Cast y que no veo que uses), cambialo a null por Default

Código :

public class Pag(event:Event = null)


Igual si lo que quieres es agregar lo que cargas, haz simplemente

Código :

ldr.load(urlReq);
addChild(ldr)


Jorge

te puse un comentario en tu anterior post

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Jun 2008 11:09 pm
No entiendo lo que me dices, Jorge. Disculpa mi ignorancia. Lo de las clases me pilla de nuevo y me pierdo un poco. Antes lo solucionaba con la función apply sobre un objeto y ahora voy perdido

Por gronsi

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2008 12:08 am
En principio agrega el Loader al displaylist :

Código :

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


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Jun 2008 01:12 am
gronsi y solisarg, usen etiquetas CODE para sus post donde exista código, mantengamos el foro ordenado ;)

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

msie

 

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