将所有单击鼠标事件放在一个侦听器中

时间:2012-03-31 21:22:08

标签: actionscript mouseevent addeventlistener

我想知道如何在一个监听器中编写不同对象的click mouseevent,如果可能的话。

我想要做的是让所有按钮点击都具有通用性,如:

stage.addEventListener(MouseEvent.CLICK,clicker);

function clicker (e:MouseEvent):void{

if (frame2_btn is clicked){
gotoAndPlay(3);
stage.removeEventListener(MouseEvent.CLICK,clicker);
}

if (frame3_btn is clicked){
gotoAndPlay(4);
stage.removeEventListener(MouseEvent.CLICK,clicker);
}

}

这样做的方法是什么?

2 个答案:

答案 0 :(得分:2)

通过层次结构(向上方向)冒泡的所有事件都可以编写这样的功能。并且您可以使用target属性获取负责生成该事件的对象。

这是一个供您参考的演示代码(For Actionscript和Haxe)

stage.addEventListener(MouseEvent.CLICK,clicker);

function clicker (e:MouseEvent):void{

    if (e.target.name  == "frame2_btn") {
       gotoAndPlay(3);
       stage.removeEventListener(MouseEvent.CLICK,clicker);
    }

    if (e.target.name  == "frame3_btn"){
       gotoAndPlay(4);
       stage.removeEventListener(MouseEvent.CLICK,clicker);
    }
}

只需在每个对象中创建一个额外的属性名称(精灵,形状......,其中有很多),这使得他们的识别变得更加容易。

希望这能帮到你

最佳迪帕克

答案 1 :(得分:0)

如果你有一个简单的按钮,它应该没有问题,如果它是一个动画片段,它充当按钮,那么孩子们会给你一个不同的名字。

尝试

时会得到什么?
stage.addEventListener(MouseEvent.CLICK,clicker);

function clicker (e:MouseEvent):void{
    trace(e.target.name);
}