2009-07-02 9 views

Répondre

1

Pour charger les fichiers swf, utilisez Loader class. Ensuite, pour passer des variables au fichier swf chargé, vous devez créer un setter dans la classe document de ce fichier swf. Voici un exemple simple:

//This is inside the loaded swf document class 
//____________________________________________________________ 

public function set testVar(newValue:String):void{ 
    trace(newValue); //This is a setter function which you use to pass parameters into. 
} 

public function get testVar():String{ 
    //Here you pass back a variable you want to be able to fetch in the mian class 
    return ""; 
} 

//This is inside of the document class 
//___________________________________________________________ 

public function Main():void{ 
    var loader:Loader = new Loader(); //Create the loader 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingComplete); 
    loader.load(new URLRequest(fileURL)); //Load the file 
} 

private function loadingComplete(event:Event):void{ 
    var loadedSwf = event.target.content; //Get the loaded swf 
    addChild(loadedSwf); //Add it to the display list if you want to display it 
    loadedSwf.testVar = "I'm testing!"; //This is how you use the setter function 
} 

Comme vous pouvez le voir, vous chargez le fichier, instansiate, puis passez une variable en elle. Maintenant, à l'autre partie, comment faire passer des variables, j'utiliserais probablement un événement pour le renvoyer. Vous avez donc un écouteur d'événement dans la classe de document principal qui écoute un événement dans le swf chargé. Lorsqu'un événement est envoyé, la classe principale fait quelque chose ou réessaie une variable ou définit une variable dans le swf chargé avec la fonction getter ou setter. How to set up a event dispatch est assez simple.

J'espère avoir un peu de sens. Sinon, commentez et j'essaierai d'expliquer.

+0

Une chose à noter est que si vous voulez réellement charger des classes que le parent peut utiliser, vous devrez regarder dans ApplicationDomain. En utilisant ApplicationDomain vous pouvez spécifier comment les classes des deux SWF vont se mélanger. –

+0

Oui. Pour les personnes qui ne savent pas ce à quoi Branden fait référence; Pour charger une classe qui se trouve dans la bibliothèque d'un swf, vous devez effectuer les opérations suivantes: var myClass = event.target.applicationDomain.getDefinition ("ClassName") en tant que classe; myClass = new myClass(); – rzetterberg

Questions connexes