访问Flex 4中加载的swf的根目录?

时间:2012-03-04 17:16:50

标签: flex flex4 loader swfloader

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

1 个答案:

答案 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"]

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