MOUSE_DOWN-Event triggert zweimal anstatt nur einmal [Flash 11]
| 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 | |
| | 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" | | | 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? | | | 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" | | | 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. | |
| Ähnliche Beiträge zum Thema | 15.04.2021 - hansi24 |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|