Hallo,
mach da bloss kein Durcheinander: Der Compiler exportiert deine Klassen-Files bei entsprechendem import-Aufruf in die *.swf mit. Klassen werden also nicht zu Laufzeit interpretiert, sondern einmalig mitexportiert. Wenn du also Änderungen an einer Klasse vornimmst, musst du die *.fla, die die Klasse importiert, neu exportieren.
Deshalb ist deine Frage schon mal nicht ganz richtig. Du meinst wohl eher den Variablen-Transfer zwischen Zeitleisten/*.fla und einer Klasse.
Es gibt verschiedene Möglichkeiten, Variablen einer Klasse abzurufen bzw. aus einer Klasse Variablen der Zeitleiste abzurufen. Als Beispiel geh ich mal wieder von der obigen "HalloWelt"-Klasse aus, die du wie folgt instanzierst:
Code:
var instanz = new HalloWelt("Hallo Welt!");
Die Eigenschaft "str" dieser Hallo-Welt-Instanz wird im Konstruktor (der Funktion "HalloWelt") mit dem Parameter "s" belegt, in diesem Falle mit "Hallo Welt". Nun gibt es verschiedene Möglichkeiten, diese Variable von der Zeitleiste aus abzurufen:
1. Die banale Ar - referenzierent:
Du referenzierst die Variable via Instanz- / und Eigenschaftsnamen.
Code:
trace (instanz.str);
//output: Hallo Welt!
2. Eine return-Funktion:
Ein return in einer Funktion markiert einerseits das Ende der Funktion, gibt aber auf Wunsch auch einen Wert zurück. Betrachte nun die Methode (Funktion) "gibMirStr". Diese Funktion beinhaltet bloss die Zeile
Diese Funktion steht also für den Wert der Variable "str".
Code:
trace(instanz.gibMirStr);
//output: Hallo Welt!
Dazu ein Beispiel aus dem Flash-Alltag:
Mit der Funktion "getNextHighestDepth" kann man sich ja die höchste freie Tiefenebene eines MovieClips ausgeben lassen. Die Funktion liest diesen Wert irgendwie aus und gibt dann das Resultat mit return zurück. Der Aufruf "this.getNextHighestDepth" steht sozusagen für das Resultat, so dass man den Funktionsaufruf wie eine Variable verwenden kann:
Code:
this.createEmptyMovieClip ("mc", this.getNextHighestDepth());
Die Verwendung von return macht dann Sinn, wenn du das Ergebnis eines Verarbeitungsprozesses ausgeben willst, dieses Ergebnis aber nicht zwingend eine Eigenschaft der Klasse darstellt.
3. get / set:
Ein prominentes Beispiel für eine get- /set-Funktion sind die Koordinaten von MovieClips. Wenn du z.B. diese Anweisung ausführst,
ist das im Prinzip nichts anderes als würdest du eine Funktion _x mit einem Paramter, der Zahl, ausführen:
Die Eigenschaft "_x" steht also für den Funktionsnamen, die Zahl nach dem "="-Zeichen den Parameter-Wert. Dieses Konstrukt ist nur für Klassen gültig. Eine set-Funktion für die Eigenschaft str unserer HalloWelt-Klasse könnte also z.B. so aussehen:
Code:
function set wert (variable) {
str = variable;
}
In der *.fla könntest du die Funktion dann so aufrufen
Code:
instanz.wert = "www.tutorials.de";
Analog funktionieren get-Funktionen. Der Code
ist im Prinzip nichts anderes als der Aufruf der Funktion _x, die, wie oben erklärt, via return einen Wert zurück gibt. Würden wir dasselbe nun mit unserer Klasse tun, würde das so aussehen:
Code:
function get wert () {
return str;
}
*.fla:
Code:
trace (instanz.wert);
//output: www.tutorials.de
gruss