在主程序中用SWFLoader載入了一個SWF子程序,如何實現(xiàn)兩個程序間的參數(shù)傳遞與方法調(diào)用?
共用一個單例對象進行事件派發(fā),通過事件傳遞參數(shù)
首先,你得有一個單例的事件派發(fā)器:
- package
- {
- import flash.events.EventDispatcher;
-
- public class Dispatcher extends EventDispatcher
- {
- private static var instance:Dispatcher;
-
- public static function getInstance():Dispatcher
- {
- if (instance == null)
- {
- instance = new Dispatcher();
- }
- return instance;
- }
- }
- }
復(fù)制代碼
然后,寫自定義事件:
- package
- {
- import flash.events.Event;
- public class MyEvent extends Event
- {
- public static const TEST_EVENT:String = "test.event";
-
- public var data:*;
-
- public function MyEvent(eventType:String, data:* = null)
- {
- super(eventType);
- this.data = data;
- }
- }
- }
復(fù)制代碼
單例派發(fā)器通過getInstance()函數(shù)獲得:
- var dispatcher:Dispatcher = Dispatcher. getInstance();
復(fù)制代碼
子模塊通過dispatcher派發(fā)事件:
- dispatcher.dispatchEvent(new MyEvent(MyEvent.TEST_EVENT, "test"));
復(fù)制代碼
主模塊通過dispatcher監(jiān)聽事件:
- dispatcher.addEventListener(MyEvent.TEST_EVENT, getEventHandler);
- function getEventHandler(e:MyEvent):void
- {
- trace(e.data);
- }
復(fù)制代碼
同樣子模塊里面也可以這樣監(jiān)聽來自主模塊的事件