0

我有一个内置在 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无济于事。在加载的应用程序的根目录访问公共变量的方法是什么?

4

1 回答 1

0

SWF 加载器有一个 content 属性,在引发 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"]

请记住确保这些是公共变量!

于 2012-03-05T04:43:14.420 回答