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

时间:2018-01-20 10:07:05

标签: actionscript-3 flex mxml

我正在使用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";
}

1 个答案:

答案 0 :(得分:0)

有两种选择。

  1. 如果您只需要简单的启动值,则可以在加载器字符串中传递参数,并让TestFile2在启动时抓取它们。

    新的URLRequest(" /view/flex/TestFile2.swf?param1 = val1")

  2. 如果您需要与孩子互动,则需要在应用完成事件后获取对它的引用。 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";
    }