Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-01-2012, 19:50   #1 (permalink)
Neuer User
 
Benutzerbild von XXIII
 
Registriert seit: Nov 2011
Ort: Sachsen
Beiträge: 6
-.- ?hasEventListener? in AS3 *grmbl*

hi liebe flashfreunde,

ich sitz gerade an meinem bisher größten projekt in AS3, jetz hab ich ein problem, das mich schon seit ca 20 stunden beschäftigt und werd net schlau draus... also ich hab eine spieler-klasse, eine optionen-klasse und eine maingame-klasse. kurzer abriss:
-es werden 2 spielerinstanzen erzeugt
-es wird eine optioneninstanz erzeugt
-beide werden im konstruktor maingame(spieler, spieler, optionen) übergeben
-es werden eventlistener auf unterobjekte(movieclips) erzeugt, diese befinden sich im array _slots
-wenn das spiel vorbei ist entferne ich es mit removechild:
PHP-Code:
if (Game!=null){
     
removeChild(Game);
     
Game=new MainGame(player,enemy,OPT);} 
-wenn ich nun eine neue runde starte, dann sind die eventlistener noch da, das prüfe ich mit:
PHP-Code:
while (this._slots[a].hasEventListener(MouseEvent.CLICK)){
     
trace("eventlistener found ")
     
this._slots[a].removeEventListener(MouseEvent.CLICK);} 
jedoch bricht dieser code nie ab, wenn ich ihn aber nach einem durchgang abbreche hab ich noch den eventlistener

habs auch schon spezieller probiert, mit:
PHP-Code:
while (this._slots[a].hasEventListener(MouseEvent.CLICK)){
     
trace("eventlistener found ")
     
this._slots[a].removeEventListener(MouseEvent.CLICKmouseEventHandler);} 

*SAD* kann mir da bitte jmd auf die sprünge helfen?

schonmal ganz vielen dank an alle, die sich die mühe machen

Geändert von XXIII (10-01-2012 um 20:20 Uhr)
XXIII ist offline   Mit Zitat antworten
Alt 11-01-2012, 09:53   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
  • Der zweite Parameter bei removeEventListener ist nicht optional, sondern muss angegeben werden! Du solltest eigentlich auch eine entsprechende Fehlermeldung bekommen?!

  • Zudem muss dieser Parameter genau der Listenerfunktion entsprechen, die hier für das betreffende Event registriert wurde. Wenn Du also keine Referenz mehr auf diese Funktion besitzt (z.B. weil sie anonym deklariert wurde oder in einem Objekt steht, auf das Du von dieser Stelle nicht zugreifen kannst) hast Du ein Problem...

  • Welchen Sinn hat ein while Schleife, wenn Du überhaupt nichts durchiterierst?
    So wie Dein Code z.Z. aufgebaut ist, solltest Du while durch if ersetzen und außenrum eine for-Schleife bauen, die a hochzählt!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (11-01-2012 um 10:00 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 11-01-2012, 10:30   #3 (permalink)
Neuer User
 
Benutzerbild von XXIII
 
Registriert seit: Nov 2011
Ort: Sachsen
Beiträge: 6
danke für die antwort,

ich hab den mouseEventHandler hier nur zur leichteren lesbarkeit eingefügt, es handelt sich dabei um eine funktion CClicked(e:MouseEvent), auf die ich noch eine referenz habe und ich habs ausprobiert mit und ohne ihr als zweiten parameter.
es kommt in keinem fall eine fehlermeldung.(sind eingeschaltet)
die while-schleife habe ich, um eventuell doppelt auftretende eventListener zu finden und zu entfernen.

muss die referenz auf die funktion tatsächlich die gleiche sein oder kann es auch ein klon sein? das könntes sein...ich probiers

THX erstmal, du hast meine gedanken in eine neue richtung zum fehlerfinden gelenkt =)
XXIII ist offline   Mit Zitat antworten
Alt 11-01-2012, 10:42   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von XXIII Beitrag anzeigen
es kommt in keinem fall eine fehlermeldung.(sind eingeschaltet)
Seltsam ... Ist this._slots[a] vieleicht ein dynamisches Objekt (z.B. ein MovieClip)? Auf deren Verwendung sollte man wenn irgendmöglich verzichten (z.B. in dem man Sprites statt MovieClips) verwendet, weil man sonst keine bzw. keine vernünftigen Fehlermeldungen bekommt.

Zitat:
Zitat von XXIII Beitrag anzeigen
muss die referenz auf die funktion tatsächlich die gleiche sein oder kann es auch ein klon sein?
Was meinst Du mit Klon? Dieselbe Methode einer anderen Instanzen oder eine andere Funktion gleichen Namens?
Nein, es muss dieselbe Funktionsinstanz sein - hier werden Referenzen verglichen!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 11-01-2012, 12:14   #5 (permalink)
Neuer User
 
Benutzerbild von XXIII
 
Registriert seit: Nov 2011
Ort: Sachsen
Beiträge: 6
danke =)

habs, mein fehler war, dass ich eben versucht hab eine neue instanz der methode zu verwenden, jetzt scheints zu funktonieren

big THX
XXIII ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as3 eventlistener

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Verständnisfrage: hasEventListener und willTrigger medianetic ActionScript 3 3 07-07-2011 17:35


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele