我一直在努力改進我的編程實踐,而我的這一習慣讓我覺得這可能不是最好的方法。處理MouseEvent
函數調用時,我傾向於在參數中使用Event
而不是MouseEvent
。AS3:事件工作正常時,爲什麼使用MouseEvent作爲函數Param?
例子:
mc.addEventListener(MouseEvent.CLICK, handleClick);
private function handleClick(e:Event):void
{
trace(e.currentTarget.name + " was Clicked");
}
是否存在的MouseEvent
在Event
類不可用裏面的一些功能或屬性,這將使使用MouseEvent
更多的必需品?我能獨自思考的唯一原因是讓你的事件/函數參數保持強類型。
優秀的,謝謝你的舉例和說明。 – 2011-04-08 17:06:57
沒問題!我應該也許已經注意到,另一個原因是,儘可能使用鍵入方式是有幫助的,因爲AS3編譯器不會對您的事件處理程序參數進行任何編譯時類型檢查。對於傳遞函數引用的任何情況(例如回調),情況也是如此。如果您的類型或參數計數不匹配,則會導致運行時損壞。但最糟糕的情況仍然是當它不失敗,但它應該...而且,當您使用正確的類型「MouseEvent」時,您將從您的代碼編輯器自動完成所有可用屬性中受益。 – 2011-04-08 22:41:06
另外,儘管你的問題是關於Event及其子類MouseEvent的具體問題,但底層的更一般的問題是:何時應該爲其一個(或多個)子類的實例使用基類引用,並且該問題的答案是不是一個快速的,而是從一本書或維基百科的一般性多態性的解釋:http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming – 2011-04-08 22:47:56