作者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)
1F:→ poomsne:法国人!! 06/18 12:00
2F:推 LacunaCoil:感谢 06/18 15:07