2012-03-04 3 views
0

J'ai une application SWf construit en flex 4. Une partie de l'application repose sur l'accès à une variable publique (« step1 ») fixé à la racine de l'application, et est accessible avecAccéder à la racine du swf chargé dans Flex 4?

var app:Object = FlexGlobals.topLevelApplication; 
trace("step one is "+app.step1); 

Ceci, sans optimal , a bien fonctionné. Maintenant, cependant, j'ai besoin de charger cette application entière dans une autre application, et je ne peux pas comprendre comment accéder à ma variable step1 plus longtemps.

J'ai été charger le swf dans la nouvelle application mère comme ceci:

public var myLoader:Loader = new Loader(); 
public var pizzaContainer:UIComponent = new UIComponent(); 

private var myUrl:URLRequest = new URLRequest("chickensoup.swf"); 

protected function application1_creationCompleteHandler(event:FlexEvent):void { 
    myLoader.load(myUrl);         
    pizzaContainer.addChild(myLoader);     
    addElement(pizzaContainer); 
} 

et moi avons essayé d'utiliser FlexGlobals.topLevelApplication.pizzaContainer en vain. Quelle serait la méthode d'accès à une variable publique à la racine de l'application chargée?

Répondre

0

Le chargeur SWF a une propriété du contenu qui est disponible après le chargeur événement terminé a été soulevée, vous pouvez l'utiliser pour accéder à toute propriété exposée dans le fichier SWF

public var loadedSM:SystemManager; 

// Initialize variables with information from 
// the loaded application. 
private function initNestedAppProps():void { 
    loadedSM = SystemManager(myLoader.content); 
} 

chargé Essayez maintenant obtenir des valeurs référence comme celui-ci :

loadedSM.application["lblOne"].text  
loadedSM.application["step1"] 

N'oubliez pas de vous assurer que ce sont des variables publiques!

Questions connexes