在主程序中用SWFLoader載入了一個(gè)SWF子程序,如何實(shí)現(xiàn)兩個(gè)程序間的參數(shù)傳遞與方法調(diào)用?
共用一個(gè)單例對(duì)象進(jìn)行事件派發(fā),通過(guò)事件傳遞參數(shù)
首先,你得有一個(gè)單例的事件派發(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ù)制代碼
然后,寫(xiě)自定義事件:
- 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ā)器通過(guò)getInstance()函數(shù)獲得:
- var dispatcher:Dispatcher = Dispatcher. getInstance();
復(fù)制代碼
子模塊通過(guò)dispatcher派發(fā)事件:
- dispatcher.dispatchEvent(new MyEvent(MyEvent.TEST_EVENT, "test"));
復(fù)制代碼
主模塊通過(guò)dispatcher監(jiān)聽(tīng)事件:
- dispatcher.addEventListener(MyEvent.TEST_EVENT, getEventHandler);
- function getEventHandler(e:MyEvent):void
- {
- trace(e.data);
- }
復(fù)制代碼
同樣子模塊里面也可以這樣監(jiān)聽(tīng)來(lái)自主模塊的事件