Lebensdauer von Variablen

inctube

Erfahrenes Mitglied
Hallo zusammen,

mich hätte mal interessiert, obs irgendwo eine Info über die Lebensdauer und die Referenzierbarkeit von Variablen in Flash gibt.
Ich habe oft das Problem, dass ich eine Variable definier, die dann wieder irgendwo undefined ist und das nervt mich immer bisschen.
Deshalb hat mich das mal interessiert weil in der Flash-Hilfe find ich da auch nicht das was ich suche.

thx inctube
 
Hi,

grundsätzlich gibt es (wenn man Klassen mal aus dem Spiel lässt) drei Typen von Variablen:
  • Globale Variablen: Diese sind dauerhaft in allen Objekten und Zeitleisten bekannt:
Code:
_global.foo = "bar";
  • Objektvariablen: Variablen, die Du per "var" auf der Zeitleiste eines MovieClips (oder _root) deklarierst, sind dauerhaft innerhalb dieses Objektes bekannt, können aber mit korrekter Adressierung auch von ausserhalb abgefragt werden:
Code:
// Irgendwo auf der Zeitleiste:
var foo = "bar";
  • lokale oder Funkionsvariablen: Variablen, die innerhalb einer Funktion mit "var" deklariert werden, sind nur innerhalb dieser Funktion bekannt und auch nur so lange, wie diese Funktion abgearbeitet wird:
Code:
function foo() {
    var bar = "irgendwas";
    trace(bar); // gibt "irgendwas" aus
}

foo();

trace(bar); // gibt "undefined" aus

Gruß
.
 
Nochmal ne Frage.
Wenn ich in einem Movie eine Variable auf _root setze, und diesen Film dann mit loadMovie in einen anderen lade, wo befindet sich dann die Variable
Immer noch auf _root von meinem Movie oder auf _root von meinem Hauptfilm

thx inctube
 
Hallo,

mit _root bezeichnet man immer die Hauptzeitleiste des Hauptfilms. Wenn du also eine swf exportierst, in der du mit _root arbeitest, und diese swf nachher in einen andern Film hineinlädtst, werden deine Pfade nicht mehr stimmen, weil nun _root auf die Hauptzeitleiste des andern Films verweist.

Es gibt aber eine Möglichkeit, wie man einen MovieClip "abschliessen" kann, so dass man aus allen seinen "Kindern" mit _root darauf verweisen kann:

PHP:
this._lockroot = true;

Als Beispiel:

Hauptfilm
|
|___mc1_mc1_1
| |
| |___mc1_2
|
|
|___mc2___mc2_1
|
|_____mc2_2
|
|_____mc2_3

Wenn nun auf mc2 oben angegebene Code-Zeile liegt, gilt:

ActionScript in mc1_1:
PHP:
trace (_root); //output:  _level0 ==> _root bezeichnet den Hauptfilm

ActionScript in mc2_2:
PHP:
trace (_root); //output:  _level0.mc2 ==> _root bezeichnet den verschlossenen MC


gruss
 
Zurück