代码之家  ›  专栏  ›  技术社区  ›  Dan Hanly

ActionScript3.0-其他事件侦听器声明?

  •  1
  • Dan Hanly  · 技术社区  · 14 年前

    我有一些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);
    

    我将扩大项目,以增加三个更多的旋转点和一个或两个按钮很快,我只是想知道是否有任何其他方式来定义和迎合这些事件。

    在spinpots的情况下,所有over和out事件都是相同的,但是每个都有自己的复制函数和侦听器。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Ross    14 年前

    你可以构建一个函数,比如:

    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);
    
        2
  •  1
  •   longstaff    14 年前

    否则,您可以使用一个over、out和click处理程序,然后按事件的目标对操作进行排序( if (ev.target == mc_spinspot)

    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);