apache-flex swf加载完成后将数据传递给子swf

kmb7vmvb  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(160)

我正在使用swfloader在主swf中加载一个swf文件,并且我想将参数传递给加载的swf。如何让加载的子引用传递数据。我的示例代码如下
TestFile1.mxml

public var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, myFun);
loader.load(new URLRequest("/view/flex/TestFile2.swf"), new LoaderContext(false, ApplicationDomain.currentDomain));
viewId.addChild(loader);        

public function myFun(event:Event):void{
    Alert.show("loader.content-"+loader.content); // here alert coming like this [object_TestFile2_mx_managers_SystemManager]
    var testfile2:TestFile2 = loader.content as TestFile2; // here testfile2 is null
    testfile2.param1 = "val1";
}
mccptt67

mccptt671#

有两个选项。
1.如果您只需要简单的启动值,您可以在加载器字符串中传递参数,并让TestFile 2在启动时获取它们。
新的URL请求(“/view/flex/测试文件2.swf?参数1 = val 1”)
1.如果需要与子进程交互,则需要在应用程序完成事件之后获取对它的引用。Event.COMPLETE仅在加载器加载时触发。在Event.COMPLETE事件中,添加一个在内容准备就绪时触发的事件。

public function myFun(event:Event):void{
    Alert.show("loader.content-"+loader.content); // here alert coming like this [object_TestFile2_mx_managers_SystemManager]
    loader.content.addEventListener(FlexEvent.APPLICATION_COMPLETE, appCreationComplete);
}
private function appCreationComplete(event:FlexEvent):void
{
    var testfile2:TestFile2 = loader.content["application"] as  TestFile2; // here testfile2 is not null
    testfile2.param1 = "val1";
}

相关问题