通过主影片来获得所有子影片的systemmanager,然后分别传递给各个子影片。子影片通过各自的systemmanager来调用别的影片。
子模块
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.managers.SystemManager; public function output(s:String):void{ trace(s); } public function CallFriend():void{ SampleChildren(_SystemManager.application).output("call..."); } private var _SystemManager:SystemManager; public function register(ASystemManager:SystemManager):void{ _SystemManager=ASystemManager; } ]]> </mx:Script> </mx:Application>
主模块
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:Script> <![CDATA[ import mx.managers.SystemManager; var Children1,Children2:SystemManager; private function onClick(e:Event):void{ SampleChildren(Children1.application).register(Children2); SampleChildren(Children2.application).register(Children1); } private function initNestedAppProps():void { Children1 = SystemManager(myLoader.content); trace(Children1.application); } private function initNestedAppProps2():void { Children2 = SystemManager(myLoader2.content); trace(Children2.application); } private function onC1(e:Event):void{ SampleChildren(Children1.application).CallFriend(); } private function onC2(e:Event):void{ SampleChildren(Children2.application).CallFriend(); } ]]> </mx:Script> <mx:Button label="ClickMe" click="onClick(event);"/> <mx:Button label="c1 call c2" click="onC1(event);"/> <mx:Button label="c2 call c1" click="onC2(event);"/> <mx:SWFLoader id="myLoader" width="300" source="SampleChildren.swf" creationComplete="initNestedAppProps();"/> <mx:SWFLoader id="myLoader2" width="300" source="SampleChildren.swf" creationComplete="initNestedAppProps2();"/> </mx:Application>