我有一个在flex 4中构建的SWF应用程序。应用程序的一部分依赖于访问在应用程序根目录下设置的公共变量(“step1”),并使用
进行访问var app:Object = FlexGlobals.topLevelApplication;
trace("step one is "+app.step1);
这虽然不是最优的,但效果很好。现在,我需要将整个应用程序加载到另一个应用程序中,我不知道如何再访问我的step1变量。
我一直在将swf加载到新的父应用程序中,如下所示:
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);
}
我尝试使用FlexGlobals.topLevelApplication.pizzaContainer
无济于事。在加载的应用程序的根目录下获取公共变量的方法是什么?
答案 0 :(得分:0)
SWF加载器有一个内容属性,在引发Loader Completed事件后可用,您可以使用它来访问加载的SWF中的任何公开属性
public var loadedSM:SystemManager;
// Initialize variables with information from
// the loaded application.
private function initNestedAppProps():void {
loadedSM = SystemManager(myLoader.content);
}
现在尝试获取引用的值如下:
loadedSM.application["lblOne"].text
loadedSM.application["step1"]
请记住确保这些是公共变量!