Flashhilfe.de - Flash Community

MOUSE_DOWN-Event triggert zweimal anstatt nur einmal [Flash 11]

 


AntwortenRegistrieren Seite1  

Schiman#1
Benutzerbild von Schiman
Beiträge: 24
Registriert: Apr 2011

16.04.2011, 10:59

Hallo alle zusammen,

ich habe das Problem, dass mein eventListener für MOUSE_DOWN bei einem mousedown zweimal feuert statt einmal. Das führt natürlich zu massiven Problemen.
Ich arbeite erst seit etwa einer Woche mit AS, vielleicht habe ich etwas nicht verstanden?

hier mein Codeschnipsel:
ActionScript:
1
2
3
4
5
6
7
8
9
10
//PAN
var timer:Timer = new Timer(50,2000000);
stage.addEventListener(MouseEvent.MOUSE_DOWN,
   function(e:MouseEvent) {
        pan = new Point(e.stageX,e.stageY);
        timer.addEventListener(TimerEvent.TIMER, function(){panFunction(); pan.x = stage.mouseX; pan.y = stage.mouseY; });
        timer.start();
     }
);
stage.addEventListener(MouseEvent.MOUSE_UP,function(){timer.stop();});


Achja und dann gleich noch die Frage: Wenn ich einen Timer laufen lassen will, bis der Befehl timer.stop() kommt, wie umgehe ich dann die Angabe der Tickanzahl? (hier habe ich sie erstmal auf 2000000 gestellt). Standardmäßig ist der Wert ja auf 0, ich möchte ihn aber praktisch auf unendlich haben.

Danke
Geändert von Schiman am 16.04.11 um 11:00 Uhr
RustyCake#2
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

16.04.2011, 12:03

Ziemlich hoher repeatCount, wenn man bedenkt das der Timer bei MouseUp wieder gestoppt wird ;-)
2000000 repeats, dafür müsstest die Mouse 27 Stunden gedrückt halten.
Die Einstellung "0" steht für unendlich viel repeats.

Warum verwendest Du Anonyme Funktionen, versteh ich nicht ganz?
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
Schiman#3
Benutzerbild von Schiman
Beiträge: 24
Registriert: Apr 2011

Themenautor/in

16.04.2011, 12:41

Ja, ist ja egal wie hoch die Zahl ist, das sollte einfach etwas Äquivalentes zu "unendlich" sein :).

Ich verwende bei Mouse_down eine anonyme Funktion, weil ich den Punkt pan unabhängig von der Funktion panFunction() setzen will. Ich könnte dafür natürlich extra eine Funktion schreiben, aber das muss ja nicht sein. Bei Mouse_up genauso. Wozu soll ich eine extra Funktion schreiben, wenn es auch so in einer Zeile geht ;).

Es kann sein, dass ich nicht ganz verstehe, wieso das ein Problem sein kann, schließlich verwende ich AS erst seit etwa einer Woche.

Aber zurück zu meiner ersten Frage: Was kann ich machen, damit mouse_down nur einmal feuert?
RustyCake#4
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

16.04.2011, 13:55

Ja machen kannst Du das natürlich wie Du möchtest, war ja nur eine Frage.
Aber genau da schätze ich, ist der Hund begraben (der zweite Aufruf).
Es hat schon sein Grund, warum man von Anonymen und auch noch verschachtelten Funktionen ab rät.
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
Schiman#5
Benutzerbild von Schiman
Beiträge: 24
Registriert: Apr 2011

Themenautor/in

16.04.2011, 15:21

Interessant, du hast vollkommen Recht, es lag an den anonymen Funktionen.

Als ich die ganzen Sachen in explizite Funktionen ausgelagert habe, funktionierte alles. Das ist wirklich interessant, weil so ein Fehler ja logisch gar nicht auftreten darf.
Das ist schon der zweite Fehler, den ich bei AS festellen musste.
Der Erste war, als ich mit for..in-Schleifen assoziative Arrays durchgegangen bin. Da hat die Schleife manchmal einen Umlauf mehr gemacht, als es Elemente im Array gibt.

Schon merkwürdig^^.

Aber auf jeden Fall vielen Dank für die Hilfe.

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de