作者gargouille (lol)
看板Flash
標題Re: [問題] AS3 function returns a function
時間Thu Jun 18 03:36:54 2009
※ 引述《cjcat2266 (CJ Cat)》之銘言:
: ※ 引述《LacunaCoil (Klean)》之銘言:
: : 事情是當這個Listener聽到MouseEvent.Click (string)的時候 (第一個參數用意)
: : 這個Listener Function接受一個Event Object (第二個參數用意)
: : 所以這個Event Object基本上不會出現在這行code上面 (黑箱作業)
: : 我們也找不到 是不是
: : (這樣的觀念還有錯嗎? 抖)
: 剛剛已經說過了
: 註冊事件的listener function接收唯一的一個參數就是Event object
: 所以沒有Event object抓不到的問題
: btn.addEventListener(MouseEvent.CLICK, listener):
: function listener(e:MouseEvent):void {
: //Event object是抓得到的
: trace(e);
: }
: : 我真的想錯了
: 不用想了,一切都照AS的規定來寫就不會有想錯的問題 :)
: 這些語法和規定在說明書裡面都寫得清清楚楚的
: 建議你把它們通通看完再說
: http://0rz.tw/aVT74
如果想要傳其他的參數給Event Handler,可以這樣用:
把這個function 包在一個叫 Delegate 的 class 中
public static function create( method : Function, ... args ) : Function {
return function( ... rest ) : * {
return method.apply( null, rest.length>0? (args.length>0?rest.concat(args):rest) : (args.length>0?args:null) );
};
}
stage.addEventListener( MouseEvent.CLICK, Delegate.create( onClick, "test");
function onClick(e:MouseEvent, str:String):void{
trace(str); // test
}
http://www.bongiovi.tw/others/delegate.zip
這邊有個簡單的範例檔。
--
http://www.bongiovi.tw
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 77.194.76.68
※ 編輯: gargouille 來自: 77.194.76.68 (06/18 03:44)
→ poomsne:法國人!! 06/18 12:00
推 LacunaCoil:感謝 06/18 15:07