| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2009
Beiträge: 38
| EventListener
Hallo zusammen. Bei mir ist ein Fehler aufgetreten und ich weiß nicht, wie ich ihn beheben kann. Auf der Bühne hab ich eine Schaltfläche mit Instanznamen a. Für diesen habe ich einen eventListener und eine Funktion. In der Funktion habe ich einen weiteren eventListener und die dazugehörige Funktion. Wenn man auf die Schaltfläche klickt, werden aber komischerweise beide Funktionen aufgerufen. PHP-Code: |
| | |
| | #2 (permalink) | |
| Neuer User Registriert seit: Mar 2009 Ort: Braunschweig
Beiträge: 164
|
Hallo, das ist kein Fehler, das ist ein Feature :-) Das hängt mit der Event-Verarbeitung in der Display-List und den Event-Phasen zusammen. Stichworte zum Nachlesen: display list, event dispatch. Und dann gilt noch folgendes (aus class EventDispatcher), was genau das Verhalten in deinem Fall beschreibt: Zitat:
Matthias Kievernagel. | |
| | |
| | #3 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
| PHP-Code: Die Auslagerung der zweiten Funktion ist Kosmetik. Ineinanderschachteln sollte man vermeiden, wenn nicht wirklich nötig (Und es ist eigentlich nie nötig).
__________________ we will stop enhancing the truth in 3, 2, ... Geändert von SpecOps-12 (23-06-2009 um 14:09 Uhr) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Mar 2009
Beiträge: 38
|
Hi, danke schon mal für die antworten!! Wenn man die aufnahmephase (Capturing-Phase) aktiviert, heißt das, dass das event bei eintritt sozusagen erst gespeichert wird?? Wird es bei dem zweiten event-eintritt dann erst ausgelöst ?? Der Code funktioniert nicht ganz. Das zweite Event (mit Capturing-Phase) wird nicht für einen bereich außerhalb der schaltfläche ausgelöst. Gruß Manuel |
| | |
| | #5 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
|
Hmm. Stimmt. Dann kann man's vielleicht so machen. Is ein Workarround. Vielleicht gibt's einen schlaueren Weg. PHP-Code:
__________________ we will stop enhancing the truth in 3, 2, ... Geändert von SpecOps-12 (23-06-2009 um 14:55 Uhr) |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Mar 2009
Beiträge: 38
|
Hi, du sagtest die auslagerung der 2. funktion ist kosmetik. Sollte man hier auch besser keinen eventListener und keine funktion in die funktion schreiben ?? warum wird bei dem code mit der capturing phase das mouseEvent für die bühne nicht registriert ?? Gruß Manuel |
| | |
| | #7 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
|
In der Capturing-Phase wird den "Ahnen", also, Eltern, Großeltern usw. des angeklickten targets mitgeteilt, dass das Event gefeuert wurde. Der Hühnerfuß ist nun, dass, wenn das Objekt gar keine childrens hat, sondern selbst angeklickt wurde, es in der Capturing Phase von niemandem gesagt bekommt, dass etwas geklickt wurde. Es ist nämlich dann selbst das Target, und wird erst in der Target-Phase informiert. Die wir durch das true im dritten Parameter von addEventListener ja zusammen mit der Bubbling-Phase weggelassen haben. @Funktion in Funktion Natürlich kann man EventListener in Funktionen setzen. Nur Funktionen in Funktionen sind oft schlechter Stil. In AS2 hab ich das auch oft gemacht, um mir den Einsatz der Delegate-Klasse zu ersparen. Aber in AS3 gibts eigentlich keinen Grund dafür, zwei Funktionen, die logisch getrennt sind, ineinander zu schreiben.
__________________ we will stop enhancing the truth in 3, 2, ... Geändert von SpecOps-12 (23-06-2009 um 15:37 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |