Hallo Leute!
Ich habe mir (mal wieder) vorgenommen, mir eine neue HP zu schreiben mit Flash. Naja, Design und so steht, jetzt geht's an den Code *gg*
Ich habe hier ein Problem mit einer selbsgeschriebenen Funktion (bzw. mit mehreren).
Der Hintergrund ist der, dass ich eine zweigeteilte HP haben möchte, oben soll etwas in einen Container (cont1) geladen werden, und erst wenn der fertig ist mit laden soll unten in einen anderen Container (cont2) der Inhalt für unten geladen werden.
Ok, also, erstmal die Funktion für das Laden generell (übrigens erlernt mit den super Tutorials hier auf der Seite *gg*), ich kommentier die einfach mal ausführlich aus...:
soweit, so gut.
Wenn ich diese Funktion "manuell" mit Argumenten füttere, dann t das wunderbar, also zB
tut genau das erwartete
So, jetzt will ich ja wie gesagt mehrere Inhalte laden, nacheinander.
Flash bietet ja bekanntlich keine wait()-Funktion o.ä. an, also habe ich das mit einem Intervall umgangen.
Ich sage direkt: Irgendetwas geht da nicht richtig, ich habe also mal ein Dynamisches Textfeld "bla" erzeugt, um die Übergaben zu testen.
soooo
wenn ich jetzt einfach einen Aufruf mache wie
dann tut's das wunderbar.
schreibe ich aber folgendes:
dann erscheint nach 2 sekunden im Dynamischen Textfeld "_level0.cont1"
Erwartet hätte ich "_level0.cont2", denn die Ausgabe "_level0.cont1" sagt mir ja irgendwie, dass der Aufruf von cont2, "foo.swf", "Ich lade foo" garnicht angekommen ist...
Woran liegt das? Kann mir da einer von euch helfen? Ich hoffe ja, denn sonst bin ich wohl verloren ^^
mfG,
Xylankant
Nachtrag: Hab mal grad probiert was passiert, wenn ich einen Button mit dem Aufruf von cont2 und so weiter belege...dann klappt alles *wunderbar* so wie ich es haben will...das kann doch net sein ^^
Ich habe mir (mal wieder) vorgenommen, mir eine neue HP zu schreiben mit Flash. Naja, Design und so steht, jetzt geht's an den Code *gg*
Ich habe hier ein Problem mit einer selbsgeschriebenen Funktion (bzw. mit mehreren).
Der Hintergrund ist der, dass ich eine zweigeteilte HP haben möchte, oben soll etwas in einen Container (cont1) geladen werden, und erst wenn der fertig ist mit laden soll unten in einen anderen Container (cont2) der Inhalt für unten geladen werden.
Ok, also, erstmal die Funktion für das Laden generell (übrigens erlernt mit den super Tutorials hier auf der Seite *gg*), ich kommentier die einfach mal ausführlich aus...:
Code:
function loadToContainer(c, f, t){ // c ist der Container, f ist der zu ladende Inhalt, t eine Message, die angezeigt wird
c.loadMovie("./swf/" + f); // lade den film f auf dem Ordner swf in den Container c
this.onEnterFrame = function(){
laden.gotoAndStop(2); // laden ist eine Ladeanimation, die im ersten Frame nichts anzeigt und im zweiten eben eine Animation "Laden, bitte warten" hat
laden.what.text=t; // what ist ein dynamisches Testfeld, t der text, welcher Inhalt gerade geladen wird
lcars.r11._visible=false; // ein Ladebalken
loaded = c.getBytesLoaded();
toload = c.getBytesTotal();
if(loaded >= 5){
lcars.r11._visible=true; // Ladebalken sichtbar machen
prozent = 100 * loaded / toload;
laden.percent.text=Math.round(prozent) + "%";
lcars.r11.balken._xscale = prozent; // balken aufbauen
lcars.r11.balken._alpha = prozent; // ballen einfaden
if(loaded == toload){
delete this.onEnterFrame;
laden.gotoAndStop(1);
}
}
}
}
soweit, so gut.
Wenn ich diese Funktion "manuell" mit Argumenten füttere, dann t das wunderbar, also zB
Code:
loadToContainer(cont1, "zahlen.swf", "Zahlen werden geladen");
So, jetzt will ich ja wie gesagt mehrere Inhalte laden, nacheinander.
Flash bietet ja bekanntlich keine wait()-Funktion o.ä. an, also habe ich das mit einem Intervall umgangen.
Ich sage direkt: Irgendetwas geht da nicht richtig, ich habe also mal ein Dynamisches Textfeld "bla" erzeugt, um die Übergaben zu testen.
Code:
finished = 0; // ist etwas am Laden bzw. ist es fertig? (0 = nichts wird geladen, != 0 etwas wird geladen)
function loadTest(c, f, t){ //c, f, t wie oben
clearInterval(loadTestID); //das Intervall direkt wieder löschen, ich will die Funktion ja
net unendlich aufrufen ^^
if(finished == 0){ // wenn nichts geladen wird
finished++; // anzeigen, dass ein Ladevorgang läuft
loadToContainer(c, f, t); // die obige Funktion mit den Parametern c, f, t aufrufen
}else{ // wenn gerade etwas geladen wird
loadTestID = setInterval(loadTest, 1000, c, f, t); // eine sekunde warten und
nochmal schauen, ob was geladen wird
bla.text = c; // ausgeben in welchen Container geladen werden soll (wie gesagt
zu Testzwecken)
}
}
function loadContent(c, f, t){ // c, f, t wieder wie oben
loadTestID = setInterval(loadTest, 1000, c, f, t); // loadTest ist eine Funktion, die testet, ob gerade etwas geladen wird und dann dementsprechend wartet
}
wenn ich jetzt einfach einen Aufruf mache wie
Code:
loadContent(cont1, "bla.swf", "Ich lade bla");
schreibe ich aber folgendes:
Code:
loadContent(cont1, "bla.swf", "Ich lade bla");
loadContent(cont2, "foo.swf", "Ich lade foo");
Erwartet hätte ich "_level0.cont2", denn die Ausgabe "_level0.cont1" sagt mir ja irgendwie, dass der Aufruf von cont2, "foo.swf", "Ich lade foo" garnicht angekommen ist...
Woran liegt das? Kann mir da einer von euch helfen? Ich hoffe ja, denn sonst bin ich wohl verloren ^^
mfG,
Xylankant
Nachtrag: Hab mal grad probiert was passiert, wenn ich einen Button mit dem Aufruf von cont2 und so weiter belege...dann klappt alles *wunderbar* so wie ich es haben will...das kann doch net sein ^^
Zuletzt bearbeitet: