Объедините все события мыши в одном слушателе - PullRequest
0 голосов
/ 01 апреля 2012

Я хотел бы знать, как составить событие мыши по щелчку различных объектов в одном слушателе, если это возможно.

Что я хотел сделать, это сделать этот слушатель универсальным для всех нажатий кнопок, таких как:

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 ]

2 голосов
/ 01 апреля 2012

Действительно возможно написать такую ​​функцию, как все события, проходящие через иерархию (направление вверх).И вы можете получить объект, который отвечает за генерацию этого события, используя целевой атрибут.

Вот демонстрационный код для вашей справки (для 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);
    }
}

Просто создайте дополнительное имя атрибута в каждом вашем объекте (Sprite, shape, ... есть многоих), что делает их идентификацию немного легче.

Надеюсь, что это поможет вам

Best Deepak

0 голосов
/ 02 апреля 2012

если у вас есть простая кнопка, она должна работать без проблем, если это мувиклип, который действует как кнопка, тогда дети дадут вам другое имя.

что вы получаете, когда пытаетесь

stage.addEventListener(MouseEvent.CLICK,clicker);

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