2012-03-31 9 views
0

Ich würde gerne wissen, wie man ein Klick-Mausevent von verschiedenen Objekten in einem Listener zu komponieren, wenn jemals das möglich ist. Bringen Sie alle Klick-Maus Ereignisse in einem Listener

Was ich tun wollte, ist dieser Hörer für alle Tastenklicks wie universal machen:

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

} 

Was die Art und Weise, dies zu tun ist?

Antwort

2

Es ist wirklich möglich, eine solche Funktion zu schreiben, da alle Ereignisse durch die Hierarchie blubbern (Aufwärtsrichtung). Und Sie können das Objekt, das für die Generierung dieses Ereignisses verantwortlich ist, mit dem Zielattribut ermitteln.

Hier ist ein Demo-Code für Ihre Referenz (für Actionscript und 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); 
    } 
} 

extra Attributnamen stellen Sie in Ihrem jedem Objekt (Sprite, Form, ... es gibt viele von ihnen sind), die macht ihre Identifizierung ist leichter.

Hope this helfen Ihnen

Beste Deepak

+0

versuche ich Ihren Code eingefügt, aber es kann nicht um das Objekt zu erkennen scheinen. Ich habe versucht zu verfolgen und nichts kommt auf. Was mache ich hier falsch? – Helixfate

0

, wenn Sie einen einfachen Knopfdruck haben, sollte es kein Problem umgehen, wenn es eine MovieClip- ist, die als eine Taste wirkt, dann werden die Kinder geben Sie eine andere Name.

was tun Sie, wenn Sie

stage.addEventListener(MouseEvent.CLICK,clicker); 

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