Laden einzelner Szenen funktioniert nicht...

zg peripherals

Erfahrenes Mitglied
Hi,

ich habe eine Flash-Animation mit 4 Szenen.

Die erste Szene enthält ein Menü (Für die erste Szene habe ich auf einen Preloader verzichtet - sind nur 10 Frames)
Aus diesem Menü kann man 3 Optionen wählen:

1.: Hauptseite mit aufwendige Grafiken im Hintergrund
2.: - " - weniger Grafiken - " -
3.: - " - kaum Grafiken - " -

Sinn der Sache ist, dass sich jeder aussuchen kann, wie "schön" er die Seite will, und wie lange er darauf warten will. Also soll immer nur genau die Szene geladen werden, die derjenige will. Und keine andere!

Je nach Link wird man dann auf die Szenen 2, 3 oder 4 verwiesen.

Jede dieser Szenen hat einen eigenen Preloader in ungefähr folgendem Stil:

PHP:
if (_framesloaded>=_totalframes) {
	gotoAndPlay (4);
}
loaded = this.getBytesLoaded();
total = this.getBytesTotal();
percent = Math.round((loaded/total)*100);
prozentanzeige = "Lade..."+percent+"%";
kbanzeige = Math.round(loaded/1024)+" kB von "+Math.round(total/1024)+" kB";
ladebalken._xscale = percent;

Wenn ich jetzt aber aus dem Menü aus einem Link folge, bleibt die Animation an einer Stelle stehen, die HINTER dem Preloader liegt, und scheint sich "aufgehängt" zu haben. Nach ein paar Sekunden (wenn die Animation KOMPLETT geladen wurde, gehts weiter)

Was hab ich da falsch gemacht? Kann ich das überhaupt so machen?

Kann mir bitte jemand helfen? Danke schonmal

Gruss

zg
 
Zuletzt bearbeitet:
Tja,

So wie es dort steht, kann ich das verstehen. Du musst dem Preloader natürlich sagen, dass er sich so lange wiederholen soll, bis das Objekt (bzw. Szene) geladen ist. Angenommen, Dein Preloader-Code steht in Frame 1. Dann setze in Frame 2 folgendes:
PHP:
of (percent < 100) {
    gotoAndPlay(1);
} else {
    gotoAndPlay(4); // hier soll die Szene ja beginnen, oder?
}
Nun wird der Code im ersten Frame so lange periodisch ausgeführt, bis 100% geladen sind. Die Zeilen
PHP:
if (_framesloaded>=_totalframes) { 
    gotoAndPlay (4); 
}
kannst Du dann weglassen.

Gruß
 
Hallo!

Du hast doch (hoffentlich) 2 Frames für den Preloader benutzt und nicht nur eine mit einem "stop();" drin

Mfg
loeff

EDIT: Datic war mal wieder schneller ..
 
Zuletzt bearbeitet:
ok.... erstmal danke für eure Hilfe.

Nun. ich dachte ich hätte so den Eindruck vermittelt, dass ich weiss wie ein Preloader aufgebaut wird. Wenn das missverständlich war: ... sorry.
Also sicher arbeite ich mit zwei Frames (und mit
PHP:
gotoAndPlay (_currentframe - 1);
erzwinge ich eine Schleife). Die paar Zeilen waren nur ein Beispiel, dass ihr euch ungefähr vostellen könnt, mit welcher Art von Preloader-Skript ich arbeite.

Dennoch funktioniert es nicht wie es soll.... OBWOHL ja der eigentliche Preloader Problemlos funktioniert.

Woran kann es dann liegen?

Gruss

zg
 
Hi,

ok, also ich würde 1. getBytesTotal und _totalframes (Flash 4 Syntax) nicht mischen. 2. beziehen sich beide Methoden/Eigenschaften auf MovieClips - ob Du diese ohne Weiteres auf Szenen anwenden kannst, weiss ich nicht genau, da ich nicht mit Szenen arbeite. Es wäre am besten, wenn Du die .fla einmal posten könntest, dann lässt sich das im Allgemeinen schnell debuggen. ;)

Ansonsten: Trace doch einfach mal die Werte der verschiedenen Variablen.


Gruß
 
Hi,

ich möchte jetzt nichts falsches sagen, aber: aus dem Handbuch geht für mich hervor, dass Szenen intern sequentiell der Hauptzeitleiste zugeordnet werden. Dadurch werden z.B. alle Szenen der Reihe nach abgespielt, wenn am Ende einer Szene kein "stop()" angegeben wird. Daher erscheint es mir nicht ohne weiteres möglich, Preloader für einzelne Szenen zu bauen, indem am Anfang einer Szene "getBytesLoaded" und dergleichen eingefügt wird. (Ich habe allerdings auch nicht den Nerv gehabt, Deine Datei mit einigen Großen Bitmaps zu versehen und sie zum Testen hochzuladen - die Streamingvorschau in Flash will Deine Preloaderstruktur jedenfalls nicht verarbeiten)

Wenn Du mit mehreren unterschiedlich großen Filmalternativen arbeitest, würde ich Dir raten, die einzelnen Versionen (was bisher die Szenen 3, 4 und 5 waren) als eigene SWF-Dateien abzuspeichern und ggf. mit loadMovie bzw. MovieClipLoader nachzuladen. Dann sollte die Implementation der Preloader kein Problem mehr darstellen.

Gruß
 
Hi DAtic,

danke für die Antwort. Das klingt gut. Wie muss ich mir das genau vorstellen. Wird dann eine externe swf-Datei in den Hauptfilm geladen? Wie wird der positioniert, und wie mach ich das am besten?
Wenn es so auf jeden Fall funktioniert, werd ich das gern versuchen. Ich bin nicht auf meine Version angewiesen.

DAnke schonmal

Gruss

zg
 
Hi,

schau mal in die Forumsuche nach "Container" und "loadMovie" -da wird schonmal viel erklärt. Anleitungen zum Erstellen von Preloadern gibt es auch etliche. Es ist am komfortabelsten, einen leeren MovieClip (container) zu verwenden, in den die Unterfilme nachgeladen werden. MovieClips werden beim Laden links und oben ausgerichtet - beim Verwenden eines leeren Containers wird die linke obere Ecke des nachzuladenden Films an der Position des Containers angezeigt.

Gruß
 
Zurück