Actionscript 3 对多个事件类型使用相同的事件侦听器回调是一种不好的做法吗?
这可能更像是一个主观问题,但对于添加事件侦听器的每个事件类型,是否通常都有一个专用方法是最佳实践 例如:Actionscript 3 对多个事件类型使用相同的事件侦听器回调是一种不好的做法吗?,actionscript-3,events,code-reuse,reduce,event-listener,Actionscript 3,Events,Code Reuse,Reduce,Event Listener,这可能更像是一个主观问题,但对于添加事件侦听器的每个事件类型,是否通常都有一个专用方法是最佳实践 例如: myButton.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); myButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); //Somewhere else in the code... private function onMouseOver(e:MouseEve
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;
}
或者,一个事件侦听器回调是否可以简单地用于常见的事件类型
像这样:
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\u UP
,MouseEvent.MOUSE\u DOWN
和其他相关的MouseEvents
事件监听器要监视,你甚至可以设置一个switch
语句来处理各种MouseEvent
类型
我想知道是否有经验丰富的开发人员会反对这种跨多个事件类型共享相同方法的方式?我认为这取决于您有多少事件,以及它们的效果有多相似。如果这两种事件类型在语义上相似(例如鼠标按下
和鼠标单击
),并且它们的效果相似(例如按下按钮),则可以将它们捆绑起来
如果事件的效果差异太大(我认为相同的代码少于80%),我建议不要这样做,然后只需编写多个处理程序并将公共功能分组到单独的子例程中。我认为这取决于您有多少事件,以及它们的效果有多相似。如果这两种事件类型在语义上相似(例如鼠标按下
和鼠标单击
),并且它们的效果相似(例如按下按钮),则可以将它们捆绑起来
如果事件的效果差异太大(我认为相同的代码少于80%),我建议不要这样做,然后只需编写多个处理程序并将公共功能分组到单独的子例程中