2 Stimmen

as3 Ereignisausbreitung stoppen

Ich habe Probleme mit der Weitergabe von Ereignissen in as3 zu stoppen, wenn ich einen neuen Ereignis-Listener in einem Ereignis-Listener hinzufügen. Meine zweite Ereignis-Listener wird aufgerufen, wenn ich nicht will, dass es zu.

this.addEventListener(MouseEvent.CLICK, firstlistener);

function firstlistener(e:Event)
{
    //do stuff
    e.stopImmediatePropagation();
    this.addEventListener(MouseEvent.CLICK, secondlistener);
}

5voto

Samuel Neff Punkte 70231

Sie können beides hinzufügen firstListener y secondListener zur gleichen Zeit, aber setzen Sie die Priorität für die erste auf höher. Auf diese Weise kann die Weitergabe an den zweiten bedingt gestoppt werden.

this.addEventListener(MouseEvent.CLICK, firstlistener, false, 100);
this.addEventListener(MouseEvent.CLICK, secondlistener);

function firstlistener(e:Event)
{
    if (...condition...) {
        e.stopImmediatePropagation();
    }
}

aber wenn Sie die Kontrolle über beide Hörer haben, dann könnte es besser sein, den zweiten bedingt vom ersten aufzurufen oder einen zweiten, anderen zu senden. Ein wenig sauberer als mit stopImmediatePropagation .

0voto

mrmotta Punkte 1

Da dies ein MouseEvent ist, versuchen Sie, es zu übergeben:

e:MouseEvent

als Argument des Handlers und nicht:

e:Event

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X