| | #1 (Permalink) |
| Neuer User Registriert seit: May 2006 Ort: Bad Ischl, Österreich
Beiträge: 243
|
Hallo, ich hab wiedermal ein komisches Problem: ActionScript:
Ich würde ja annehmen, dass dieser Code bei allen Trace als this-Klasse "Main" ausgeben würde. Macht er aber nicht: Code: MainClass: this: Main0 - Main test: this: Main0 - Main FlexEvent.INITIALIZE: this: [object global] - global MouseEvent.CLICK: this: [object global] - global Lg Warappa Flashdevelop 3 Flex 3 Projekt Geändert von Warappa (04-11-2008 um 10:37 Uhr) |
| | |
| | #3 (Permalink) |
| as3 addict Registriert seit: Jun 2002 Ort: Leipzig
Beiträge: 257
|
Nun, die Funktion, die du hinzufügst hat nichts mit der Klasse zu tun... Sie ist weder eine Objekt-Funktion der Instanz von Main, noch eine Klassen-Funktion der Klasse Main. Du baust einfach eine Funktion in den Raum, und damit die Funktion weiß, wo sie überhaupt hingehört, wird sie an global attached... wenn du die Funktion in der Klasse definierst ganz normal mit PHP-Code: |
| | |
| | #4 (Permalink) |
| Neuer User Registriert seit: May 2006 Ort: Bad Ischl, Österreich
Beiträge: 243
|
...hatte ich schon "befürchtet". Das Problem kenne ich aus AS2 Zeiten. Dort hab ich mir dann einfach eine lokale Variable ausserhalb der anonymen Funktion erzeugt und mit this belegt (so in etwa): ActionScript:
Ich dachte, diese unschöne Notlösung hätte sich in AS3 geändert. Nungut: entweder diese unschöne Lösung oder eine richtige Klassenfunktion (letzeres ist wahrscheinlich besser)... Danke nochmal für die Aufklärung Marcy_LH! Warappa |
| | |
| | #5 (Permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 9.607
|
Wieso stellt sich die Frage nach Instanzfunktionen?
__________________ FFK09:Speaker und FFK09:Trainer :: Architectures - Refactoring - Prototyping - Coding - Training :: ActionScript 3 - Flex [2,3,4] - Java - Scala |
| | |
| | #7 (Permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 9.607
|
Ich wollte damit ausdrücken, das anonyme Funktionen böse sind! Der Weg ist der richtige. EventHandler sollten aber private sein.
__________________ FFK09:Speaker und FFK09:Trainer :: Architectures - Refactoring - Prototyping - Coding - Training :: ActionScript 3 - Flex [2,3,4] - Java - Scala |
| | |
| | #8 (Permalink) |
| Nagelneuer User Registriert seit: Dec 2005
Beiträge: 924
|
Komisch, ist mir noch nie aufgefallen. Ohne this hast du auf jeden Fall Zugriff auf die Eigenschaften der Instanz.
__________________ The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D |
| | |
| | #9 (Permalink) |
| Neuer User Registriert seit: May 2006 Ort: Bad Ischl, Österreich
Beiträge: 243
|
Hi, danke hazy fantazy, (ha, ich wusste dass da was anders als in AS2 war!) Das ist aber schon komisch (/blöd/...), oder? Wie soll man denn auf die Idee kommen, dass, wenn man this weglässt, sich das Programm anders verhält (=richtig) als mit this (=falsch!?)? Bzw. warum kommt kein Kompilerfehler? Bei AS2 ist das als Fehler festgestellt worden. |
| | |
| | #10 (Permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 9.607
|
Ich schätze das hängt damit zusammen, dass die Funktion nicht an die Instanz gebunden ist sondern sich nur die Properties aus dem Scope holt.
__________________ FFK09:Speaker und FFK09:Trainer :: Architectures - Refactoring - Prototyping - Coding - Training :: ActionScript 3 - Flex [2,3,4] - Java - Scala |
| | |
| | #12 (Permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 9.607
|
Nein, denke ich nicht. Eine Instanz hat ihren eigenen Scope. Wenn eine Funktion aber anonym ist, wird sie in einem anderen Speicherbereich geschrieben und damit nicht der Instanz sondern dem global-Scope zugewiesen. Das wird in ActionScript 2 ähnlich laufen. Und in ActionScript 2 gab es ja gerade die ScopeShifts die mit der Delegate-Klasse zu beheben waren. Das wurde in ActionScript 3 behoben -> Klassen sind sealed und müssen Instanzen in den Gültigkeitsbereich einer anderen Klasse eindringen (ihren Scope), so wird das mit EventListeners gemacht.
__________________ FFK09:Speaker und FFK09:Trainer :: Architectures - Refactoring - Prototyping - Coding - Training :: ActionScript 3 - Flex [2,3,4] - Java - Scala |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| event, events, flex 3, global, konstruktor |
| Themen-Optionen | |
| Ansicht | |
| |