Wenn estente eine Klasse aus einem MovieClip, dass es andere Objekte (MovieClip, TextField, etc ...) sie vielleicht nicht "bereit" innerhalb des Konstruktors enthält. Das passiert vor allem bei Verwendung von mehr erweiterte MovieClip oder Komponenten (Kontrollen) von Flash. Zur Lösung des Problems benutzen Sie einfach die onLoad-Ereignis von der Klasse selbst vererbt. Zum Beispiel vorstellen, haben Sie einen MovieClip, der ein TextField-Objekt (statisch visuelles Objekt in Flash) und eine TextInput-Objekt (eingefügt Bedienfeld Komponenten) enthält und wollen Ihre Immobilie im Konstruktor unserer Klasse MyClass gesetzt.
Wir schaffen ein Symbol und Einlage im Inneren der beiden Objekte TextField (nennen wir text_txt) ist die TextInput-Objekt (textinput_txt). Wir verbinden dieses Symbol, um eine MovieClip erweiternde Klasse, rufen Sie unsere Klasse MyClass. Was wir bekommen, ist, dass während der Konstruktor unserer Klasse MyClass diese beiden Kontrollen initialisiert werden. Wenn wir versuchen, einen Code wie folgt verwenden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | / / controls . TextInput ; Import mx Kontrollen TextInput..; / / MovieClip { class MyClass erstreckt MovieClip { / / text_txt : TextField ; private var text_txt: TextField ; textinput_txt : TextInput ; private var textinput_txt: TextInput; / / function MyClass () { "MiaClasse::costruttore" ) ; trace ("MyClass :: constructor"); / / = "Ciao" ; . text_txt text = "Hallo"; = "Ciao" ; . textinput_txt text = "Hallo"; / / } } |
Welche otteremo steuert dann nur die Initialisierung des TextField! Wenn wir stattdessen versuchen, das Ereignis onLoad aus Super-Klasse MovieClip übernommen wurde:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | / / controls . TextInput ; Import mx Kontrollen TextInput..; / / MovieClip { class MyClass erstreckt MovieClip { / / text_txt : TextField ; private var text_txt: TextField ; textinput_txt : TextInput ; private var textinput_txt: TextInput; / / function MyClass () { "MiaClasse::costruttore" ) ; trace ("MyClass :: constructor"); / / = "Ciao" ; . text_txt text = "Hallo"; / / onLoad = _onLoad; } / / _onLoad ( ) { _onLoad private function () { = "Ciao" ; . textinput_txt text = "Hallo"; } } |
In diesem Fall wird die Zeichenkette "Hallo" wird sichtbar auf TextField, dass die TextInput. se preferite) utilizzata per eseguire tutte le inizializzazioni del caso, comprese quelle che normalmente inseriremo – con successo – nel costruttore. Eine allgemeine Regel, dann, wenn Sie Komponenten und anderen MovieClip "Derivate" haben, wäre es, immer im Konstruktor stecken einen Zeiger auf eine private Funktion _onLoad() (oder init() , wenn Sie bevorzugen) verwendet, um alle notwendigen Initialisierungen durchführen , einschließlich derjenigen, die normalerweise einfügen - erfolgreich - im Konstruktor.










Offensichtlich ist die gleiche gilt für die Entladung Ereignis ()
[...] Die Lösung in Flash vorgeschlagen: wie man die Komponenten in der Konstruktor einer Klasse initialisiert werden, zum Beispiel in ActionScript 3.0 ist es diese: Klartext Actionscript: [...]