Flash ActionScript 3.0-替代事件侦听器声明?

Flash ActionScript 3.0-替代事件侦听器声明?,flash,actionscript-3,actionscript,event-listener,Flash,Actionscript 3,Actionscript,Event Listener,我有一些ActionScript3.0代码。此代码控制其后台的许多元素。这些元素都有一个Over、Out和Click事件 我目前将这些事件侦听器定义为: mc_hotspot.addEventListener(MouseEvent.MOUSE_OVER, lift); mc_hotspot.addEventListener(MouseEvent.MOUSE_OUT, setDown); mc_hotspot.addEventListener(MouseEvent.CLICK, select);;

我有一些ActionScript3.0代码。此代码控制其后台的许多元素。这些元素都有一个Over、Out和Click事件

我目前将这些事件侦听器定义为:

mc_hotspot.addEventListener(MouseEvent.MOUSE_OVER, lift);
mc_hotspot.addEventListener(MouseEvent.MOUSE_OUT, setDown);
mc_hotspot.addEventListener(MouseEvent.CLICK, select);;
mc_spinspot.addEventListener(MouseEvent.MOUSE_OVER, spinspotOver);
mc_spinspot.addEventListener(MouseEvent.MOUSE_OUT, spinspotOut);
mc_spinspot.addEventListener(MouseEvent.CLICK, spinClick);
mc_spinspot2.addEventListener(MouseEvent.MOUSE_OVER, spinspot2Over);
mc_spinspot2.addEventListener(MouseEvent.MOUSE_OUT, spinspot2Out);
mc_spinspot2.addEventListener(MouseEvent.CLICK, spin2Click);
btn_back.addEventListener(MouseEvent.MOUSE_OVER, backOver);
btn_back.addEventListener(MouseEvent.MOUSE_OUT, backOut);
btn_back.addEventListener(MouseEvent.CLICK, backClick);
正如您所看到的,这是一种非常长且复杂的方式来定义这些元素的事件,并且每个元素都有一个事件触发函数

我将很快扩展项目,增加三个旋转点和一个或两个按钮,我只是想知道是否有其他方式来定义和迎合这些活动

在spinspots的情况下,所有结束和结束事件都是相同的,但每个事件都有自己的重复函数和侦听器


提前感谢

您只需构建如下函数:

function addButtonEvents(mc:*,over:Function,out:Function,click:Function = null) {
    mc.addEventListener(MouseEvent.MOUSE_OVER,over,false,0,true);
    mc.addEventListener(MouseEvent.MOUSE_OUT,out,false,0,true);

    //if we have an optional click event
    if (click != null)
         mc.addEventListener(MouseEvent.CLICK,click,false,0,true);

}
然后您可以在一次通话中添加所有三个事件,即

addButtonEvents(mc_spinspot, spinspotOver, spinspotOut, spinClick);

最好的方法是通过封装,通常over-and-out状态只影响正在over-and-out的项,因此您可以在其中创建一个spinspot类和make-over-and-out处理程序,并且只关心父类中的click处理程序

否则,您可以使用一个over、out和click处理程序,然后按事件的目标对操作进行排序(
if(ev.target==mc_spinspot)
)等。这样,您还可以使用assignEvents函数,为传递的变量提供over、out和click响应程序

private function addEvents(obj:Sprite){
    obj.addEventListener(MouseEvent.MOUSE_OVER, overHandler);
    obj.addEventListener(MouseEvent.MOUSE_OUT, outHandler);
    obj.addEventListener(MouseEvent.CLICK, clickHandler);

}
addEvents(mc_spinspot);