| |||||||
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: Oct 2005
Beiträge: 53
| Listener Funktion ohne Listener ausführen
Hallo, wie so viele, fange ich jetzt auch an in AS 3.0 zu arbeiten, nachdem ich mich in 2.0 ganz gut auskenne. Ich habe bisher schon verstanden, dass man für eigentlich alles Listener verwendet und das funktioniert auch. Jetzt aber meine Frage: Wenn ich bei einem Knopf mit einem Listener ein CLICK abfrage und dann meine Funktion ausführe, ist es dann auch irgendwie möglich, diese Funktion von einer anderen Funktion ausführen zu lassen? Das Problem ist ja, dass ich theoretisch den MouseEvent.CLICK mitgeben müsste. Code: first_level.erlebnis.icon.addEventListener(MouseEvent.MOUSE_DOWN, setup_erlebnis);
function setup_erlebnis(evt:MouseEvent):void{
trace("Funktion ausgeführt");
}
setup_erlebnis; Vielen Dank schonmal! |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 53
| Danke
Super, danke...all meine Google Sucheingaben brachten keine Lösung, aber deine war super ;-) Für alle die es interessiert: Code: first_level.erlebnis.icon.addEventListener(MouseEvent.MOUSE_DOWN, setup_erlebnis);
function setup_erlebnis(evt:MouseEvent):void{
trace("Funktion ausgeführt");
}
setup_erlebnis(new MouseEvent(MouseEvent.CLICK)); |
| | |
| | #4 (permalink) |
| . Registriert seit: May 2003 Ort: bayern
Beiträge: 1.117
|
du kannst auch einfach schreiben: PHP-Code:
__________________ [mooseMash] |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 1.197
|
eine etwas bessere Lösung wäre, den Event Parameter in der Funktion optional zu machen ActionScript:
__________________ EDV = Ende Der Vernunft |
| | |
| | #8 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.139
|
Eine noch besserere Lösung: ActionScript:
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #10 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.139
|
Es ist besser weil Eventlistener bestimmte Typen von Funktionen sind. Sie werden quasi in den Scope der registrierenden Klasse übernommen, so das die IEventDispatcher Instanzen die Funktionen direkt aufrufen können. Da die Klassen nun direkte Kontrolle über die Funktionen haben, obwohl sie ihnen nicht gehören ist es im Hinblick der Kaspelung besser/sauberer die entsprechenden Funktionen nur als definierte Schnittstellen zu verwenden für Kommunikationen mit anderen Klassen über Events.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #11 (permalink) | ||
| Neuer User Registriert seit: Jul 2003
Beiträge: 1.197
| Zitat:
Zitat:
Wenn aber der Listener in derselben Klasse registriert wird, die auch die Funktion enthält, macht es ja keinen Unterschied.
__________________ EDV = Ende Der Vernunft | ||
| | |
| | #12 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Praktisch macht das keinen Unterschied, aber dennoch würde ich Omega Psi auf jeden Fall zustimmen. Der Punkt ist einfach, dass du eine Funktion als Listener-Funktion konzipiert hast, sie dann auf andere Art zu verwenden ist inkonsistent, und daher verwirrend. Auch ein Grund ist, dass man (zumindest in der AS Welt) Listener-Funktionen meist anhand des Events, das sie behandeln, benennt. (Kommt vielleicht noch aus der AS1 Zeit, als Listener eigentlich nur normale Funktionen mit einem speziellen Namen waren) Der Name einer normalen Methode sollte aber ausdrücken, was die Methode macht. Der Vorschlag von Omega Psi wird beiden Konventionen gerecht.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #13 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.139
|
Wenn du die null Referenz nicht expizit erlaubst, hast du in meinen Augen ein paar Vorteile. Es macht das Testen einfacher, weil du nicht auf Events angewiesen bist. Ausserdem weichst du so nicht die API auf, da die Signaturen keine null Referenz erlauben. Und die Signaturen kommunizieren ihre Funktionalität besser.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 1.197
|
Was genau sind jetzt Signaturen, die Funktionsnamen? Zum Testen habe ich in dem Projekt, an dem ich gerade arbeite, in den Funktionen den Event mit =null optional gemacht... funktioniert hat es jedenfalls ganz gut .Aber es ist auch mein erstes richtiges AS3 Projekt. Änderungen an meinem Programmierstil übernehme ich gerne, wenn ich verstehe wieso. Mit Design Patterns werde ich mich auch noch intensiv beschäftigen. Momentan fehlt mir nur die Zeit.
__________________ EDV = Ende Der Vernunft |
| | |
| | #15 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.139
|
Signaturen sind die Funktionsdefinitionen nach außen: Code: <[Optional: override]> <Sichtbarkeitsmodifikator> <Name der Funktion> (<Menge der Argumente>): <Typ des Rückgabewerts> Mit Design Patterns hat das ganze nichts zu tun, es ist viel mehr ein Idiom der ActionScript Sprache.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |