问题
I am loading one swf file inside a main swf by using swfloader and i want to pass the parameters to the loaded swf. How can i get the loaded child reference to pass data. My sample code is as follows
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:
There are 2 options.
If you just need simple startup values, you can pass arguments in the loader string and have TestFile2 grab them on start.
new URLRequest("/view/flex/TestFile2.swf?param1=val1")
If you need to interact with the child, you need to grab a reference to it after the application complete event.
Event.COMPLETEonly fires when the loader is loaded. In theEvent.COMPLETEevent, add an event to fire when the content is ready.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"; }
来源:https://stackoverflow.com/questions/48354825/pass-data-to-child-swf-after-swf-loading-completed