2011-11-18 45 views
1

这可能更像是一个主观问题,但是对于添加事件侦听器的每个事件类型都有一个专用方法是最佳做法吗?为多个事件类型使用相同的事件侦听器回调是不好的做法吗?

如:

myButton.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); 
myButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); 

//Somewhere else in the code... 

private function onMouseOver(e:MouseEvent):void { 
this.mouseIsOverButton = true; 
} 
private function onMouseOut(e:MouseEvent):void { 
this.mouseIsOverButton = false; 
} 

或者,可能一个事件侦听器回调简单地重复使用常见Event类型?

像这样:

myButton.addEventListener(MouseEvent.MOUSE_OVER, onMouseHandler); 
myButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseHandler); 

//Somewhere else in the code... 

private function onMouseHandler(e:MouseEvent):void { 
this.mouseIsOverButton = e.type==MouseEvent.MOUSE_OVER; 
} 

如果你有一个MouseEvent.MOUSE_UPMouseEvent.MOUSE_DOWN和其他相关MouseEvents事件侦听器来观看,你甚至可以设置一个switch语句来处理所有不同类型的MouseEvent

我想知道,如果任何有经验的开发人员会反对这种方式跨多个Event类型共享相同的方法吗?

回答

4

我认为这取决于你有多少事件,以及它们的影响有多相似。如果两种事件类型在语义上相似(例如MOUSE_DOWNMOUSE_CLICK)并且它们的效果相似(例如按下按钮),则可以将它们捆绑在一起。如果事件的影响太不同(我说不到80%相同的代码),我会建议不要这样做,然后只需编写多个处理程序并将常用功能分组在一个单独的子例程中。

相关问题