Variablen übergeben

Rollo

Erfahrenes Mitglied
Hallo und einen guten Abend,
ich habe ein kleines Problem. Ich möchte Variablen, die ich in einer externen swf vorliegen habe in meinem Hauptfilm nutzen. Bekomme das aber irgendwie nicht so recht hin.

Hier mein Script im Hauptfilm
Code:
...
loadMovie("seiten/seite1.swf",1);
trace(gs);
seiten = gs;
...

Und in der swf
Code:
ifFrameLoaded(_totalframes){
	gotoAndPlay(3);
	gs = 0;
	geladen = true;
}

Ich möchte wenn die swf geladen ist, dass die Variablen an den Hauptfilm übergeben werden. Habe auch schon gegoogelt, auch Lösungsansätze gefunden, die aber nicht funktioniert haben. Vielleicht habt ihr ja eine Lösung parat.

MfG Rollo
 
Hi,

1. Erwartet die loadMovie-Methode als Ziel keine Stufe, sondern einen Container (MC-Referenz).

2. liegt die Variable "gs", die Du in der eingeladenen SWF definierst, auf der Hauptzeitleiste dieses Films und nicht auf der Hauptzeitleiste des Hauptfilms. Du müsstest vom Hauptfilm also so darauf zugreifen:
Code:
var container = this.createEmptyMovieClip("container", 1); // Container erstellen
container.loadMovie("seiten/seite1.swf"); // Film einladen

// und später dann:

trace(container.gs);

3. ist die Methode ifFrameLoaded veraltet. Du solltest zur Überprüfung des Ladestatus lieber getBytesLoaded und getBytestTotal verwenden.

4. musst Du im Hauptfilm erst warten, bis der zweite Film komplett geladen ist. Dazu kannst Du entweder auch getBytesLoaded und getBytesTotal verwenden, oder Du arbeitest mit einer Callback-Methode, die von neuen Film aufgerufen wird:

Code:
// Code im Hauptfilm:

var container = this.createEmptyMovieClip("container", 1); // Container erstellen
container.loadMovie("seiten/seite1.swf"); // Film einladen

function ichBinDa(obj) { // Callback-Methode (wird vom neuen Film aus aufgerufen)
    trace(obj.gs); // Es wird eine Referenz auf den aufrufenden Film übergeben
}

Code:
// Code im eingeladenen Film:

stop(); // Anhalten

this.onEnterFrame = function() { // onEnterFrame-Methode starten
    var cur = this.getBytesLoaded(); // geladene und Gesamtmenge feststellen
    var max = this.getBytesTotal();
    if (cur > 10 && max > 10) {
        var percent = cur * 100 / max; // Prozentwert ermitteln
        if (percent >= 100) { // wenn geladen ...
            delete this.onEnterFrame; // onEnterFrame beenden
            this.gs = 0; // Variable setzen
            _root.ichBinDa(this); // und Callback im Hauptfilm aufrufen
            gotoAndPlay(3); // weiter abspielen
        }
    }
}

Gruß
.
 
Riesen Dank. Ich werde mich im Laufe des Tages gleich mal ran setzten.
Danke für die schöne Erklärung und die Codebeispiele.

MfG Rollo
 
Zurück