做東西的時(shí)候發(fā)現(xiàn)AS3的EventDispatcher類好像不能傳參數(shù)。請(qǐng)教 bogey ,答曰,寫一個(gè)類繼承 Event ,把參數(shù)放在構(gòu)造里。試了一下,果然好用。
實(shí)例演示(查看類代碼)
頁(yè)面生成部分就不介紹了,唯一值得注意的是 TextField 類增加了一個(gè) appendText 方法。以前的
myTxt.text += "your text";
應(yīng)該寫成:
myTxt.appendText("your text");
如果使用老的方法編譯器會(huì)提示:這招太慢了,試試新的吧。(Appending text to a TextField using += is many times slower than using the TextField.appendText() method.) EventDispatcher 類的 dispatchEvent 方法只接受一個(gè)參數(shù):event:Event。為了在廣播事件的同時(shí)傳遞參數(shù),寫一個(gè)繼承Event的類:TestEvent
internal class TestEvent extends Event{ //code here }
將事件類型聲明為一個(gè)字符串常量:
public static const TRACE_INOF:String = "traceInfo";
將要傳遞的參數(shù)和事件類型一起放在構(gòu)造函數(shù)里
private var _who:String; private var _info:String; public function TestEvent(type:String,who:String,info:String){ super(type);//調(diào)用父類 Event 的構(gòu)造函數(shù) _who = who; _info = info; }
廣播事件的代碼:
public function dispatch(who:String,info:String):void{ dispatchEvent(new TestEvent(TestEvent.TRACE_INOF,who,info)); }
注冊(cè)監(jiān)聽器:
dispatcher.addEventListener(TestEvent.TRACE_INOF,onTraceInfo);
接收事件和參數(shù):
public function onTraceInfo(event:TestEvent):void{ var traceTxt:TextField = getChildByName("traceTxt") as TextField; traceTxt.appendText(event.who+"dispatch:"+event.info); }
這里需要注意的是 as ,新的類型轉(zhuǎn)換操作符,將 getChildByName() 返回的 DisplayObject 轉(zhuǎn)換為前面聲明的類型 TextField 。如果轉(zhuǎn)換失敗將返回 null 。官方給的例子:
public var myArray:Array = ["one", "two", "three"]; trace(myArray as Array); // one,two,three trace(myArray as Number); // null trace(myArray as int); // null
源文件: event.rar
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁(yè) Timer 下一頁(yè) Function
◎進(jìn)入論壇Flash專欄版塊參加討論
|