Externe swf wird sofort gestartet, Preloader ist nicht zu sehen

McPower

Grünschnabel
Hi Leuz!

Also ich habe folgendes Problem: Ich habe einen kleinen Preloader gebastelt, der per GET die Pfadangabe des zu ladenden swf-files erhält. Das klappt auch alles ganz gut, nur daß er leider sofort die schon geladenen Bilder der externen swf anzeigt .... und kommt mal das Internet nicht hinterher, so fängt der geladene Film logischer Weise an zu ruckeln. Wie kann ich denn das Abspielen des externen swf's so lange verzögern, bis es wirklich ganz geladen ist? Denn die Textfelder, die ich erstellte, damit man den Fortschitt des Ladens sehen kann, sind ja auch sofort weg!

Das ist mein Code bisher (Die Bühne besteht aus nur 3 Frames und 1 Ebene,das 1. und das 3. Frame sind (bis auf den AS-Code) leer, im 2. Frame sind Textfelder für die Ausgabe des Vortschrittes des Ladevorgangs)

Frame 1:
(leer)
var FilmPfad; //Pfadangabe über GET von der HTML-Seite
var geladen;
var zuladen;
var prozent;
var film = new MovieClip; //"film" soll das Movie aufnehmen
film.loadMovie( FilmPfad );
film.stop() //eigentlich sollte der Film hier gestoppt werden


Frame 2:
(in diesem Frame befinden sich auch die Textfelder)
t1 = geladen; //Textfelder werden mit Informationen gefüttert
t2 = zuladen;
t3 = FilmPfad;
if(geladen == zuladen)//wenn der Film geladen ist soll
{ //er starten ..... eigentlich!
film.play();
}


Frame 3:
(leer)
gotoAndPlay (2);

ich hoffe, daß ihr mir helfen könnt!
DANKE!
 
Hi,

- wo werden denn Deine Variablen "geladen" und "zuladen" gesetzt?

- Mich wundert zudem, dass das so mit new MovieClip() funktioniert - ich würde createEmptyMovieClip verwenden.

- stop() bringt nicht viel, so lange de Film noch nicht geladen ist.

Ich würde Dir den MovieClipLoader empfehlen. Es sollte eigentlich auch so gehen, notfalls setze den Film zunächst auf invisble und führe onLoad ein gotoAndPlay(1) aus. Am besten wäre es, wenn Du Deine Datei posten könntest - dann bekommt man das bestimmt fix hin. ;)

Gruß

.
 
Hallo,

Da fehlt doch was ... :)

PHP:
Frame 1:
(leer)
var FilmPfad; //Pfadangabe über GET von der HTML-Seite
zuladen = _root.getbytestotal();
geladen = _root.getbytesloaded();
prozent = Math.round((_root.getbytesloaded()/_root.getbytestotal())*100);
var film = new MovieClip; //"film" soll das Movie aufnehmen
film.loadMovie( FilmPfad );
film.stop() //eigentlich sollte der Film hier gestoppt werden

Das wars.

Tschüss,
L
 
@loeff:
zuladen = _root.getbytestotal();
geladen = _root.getbytesloaded();
schon, aber bestimmt nicht an dieser Stelle - wenn dann in Frame 2, der periodisch aufgerufen wird und am besten sowieso in einer onEnter-Frame-Methode (und außerdem mit korrekter Groß- und Kleinschreibung). :p

Gruß

.
 
Datic hat gesagt.:
Hi,

- wo werden denn Deine Variablen "geladen" und "zuladen" gesetzt?

- Mich wundert zudem, dass das so mit new MovieClip() funktioniert - ich würde createEmptyMovieClip verwenden.

- stop() bringt nicht viel, so lange de Film noch nicht geladen ist.

Ich würde Dir den MovieClipLoader empfehlen. Es sollte eigentlich auch so gehen, notfalls setze den Film zunächst auf invisble und führe onLoad ein gotoAndPlay(1) aus. Am besten wäre es, wenn Du Deine Datei posten könntest - dann bekommt man das bestimmt fix hin. ;)

Gruß

.
also die Funktion createEmptyMovieClip find ich nicht, kann sein, dass sie in Flash5 noch net drin ist aber im Anhang mal die datei
Ach ja und wegen der .stop()-sache...naja du hast recht, es funktioniert net. Das war nur so ein Strohhalm, an den ich mich verzweifelt versucht habe zu klammern :)

bevor ich es vergess: Also die Datei hat noch keine Art von Grafik oder ähnlichem, also wundert euch bitte nicht, das die Textfelder ,kreuz-und-quer' auf der Bühne liegen und nur so komische Bezeichnungen wie t1...t4 haben. Ich wollte nur erst, daß überhaupt etwas funktioniert. Sinnige Bezeichnungen und Grafik (also zB nen Ladebalken) füge ich dann hinzu.

@ Datic: Was ist denn der MovieClipLoader von dem du gesprochen hast?

Liebe Grüße
 

Anhänge

  • loader2.zip
    2,6 KB · Aufrufe: 136
Zuletzt bearbeitet:
Hi,

stimmt, die existiert erst seit Flash 6.

(den MovieClipLoader kannst Du nicht einsetzen; den gibts erst ab Flash 7)

Jedenfalls musst Du Deinen beiden Variablen "geladen" und "zuladen" natürlich Werte zuweisen - was nicht geschieht. Deine Routine kann also gar nicht wissen, wieviel von dem Clip bis jetzt geladen wurde:
PHP:
geladen = film.getBytesLoaded();
zuladen = film.getBytesTotal();

if(geladen == zuladen)
{
	film.stop();
}

Bitte achtet immer darauf, dass Ihr die von Euch verwendete Version im Thread angebt, damit solche Misverständnisse vermieden werden!

Gruß

.
 
Zuletzt bearbeitet:
Guten Abend Datic!

getBytesLoaded() wir nicht von Flash5 unterstützt? hmm das erklärt einiges, ist aber seltsam! Also im Befehlssatz sind sie vorhanden. Sie werden auch im AS-Fenster angezeigt und beim einfügen in den Code blau hervorgehoben (Syntax-Hilighting)! Und trotzdem werden sie nicht unterstützt? komische Sache! Also bleibt mir wohl nix anders Übrig als FlashMX mir zu besorgen. Oder welche Version würdest du mir empfehlen, Datic?
 
Höre ich da eine leise Ironie aus Deinem Beitrag? ;)

Nun, ich bin der automatischen Referenz auf den Leim gegangen, die mich beim Druck auf F1 über dem Schlüsselwort zur Referenzseite von Sound.getBytesLoaded führte - Für MovieClips ist diese Funktion in der Tat seit Flash 5 gegeben. :)

-> ich würde trotzdem auf MX2004 updaten; hat schon einige Vorteile.

Gruß

.
 
Ironie? nee, ich glaub das war einfach nur verdutzt :)
Ich bin sogar extra nochmal in die Flash-Referenz, daß ich da ja kein schwachsinn erzähle. Und wie gesagt, dort ist es unter MovieClip.getBytesLoaded() aufgeführt.

Aber obwohl es vorhanden ist, funktioniert es trotzdem net. Und das ist das, was mich gewissermaßen fuchst. Ich komme einfach net dahinter, warum das komplette Video gezeigt wird, obwohl es einfach nur geladen werden soll. Weder wird das Video gestoppt und erst angezeigt, wenn es komplett ist, noch werden die Werte durch getBytesLoaded() zurück geliefert. Kurz gesagt, ich sitz da und wunder mich nur noch :)

kannst du mir noch nen Tipp geben, wo man FlashMX möglichst günstig bekommt? Will nämlich keine Unsummen dafür ausgeben, nur auf den Verdacht hin, daß dann ein PreLoader evtl funktioniert.

Also ich versuche jetzt noch ein bisschen dran rum zu basteln!
schöne Grüße
 
Hi,

also ab MX funktioniert folgendes:
PHP:
// 1. Frame:
var clip = this.createEmptyMovieClip("clip",1);
clip.loadMovie("irgendein.swf");

// 2. Frame:
cur = clip.getBytesLoaded();
max = clip.getBytesTotal();
percent = cur * 100 / max;

trace(percent);

// 3. Frame:
if (percent < 100) {
	gotoAndPlay(2);
} else {
	stop();
}
Wenn ich den MovieClip nur mit "new MovieClip()" erstelle, bekomme ich eine Fehlermeldung: Clips müssen im Player instanziert werden. Da nun createEmptyMovieClip in Flash 5 nicht existiert, erstelle doch einfach einen leeren MovieClip und nenne die Instanz "clip". Setze den Clip bis zum vollständigen Laden unsichtbar (_visible = false) und lass ihn danach anzeigen und ab dem ersten Bild abspielen.

Na ja: Macromedia bietet zur Zeit günstige Studenten- und Schulversionen von Flash und dem Studio an - da lohnt es sich eigentlich zuzuschlagen, wenn man die Programme nicht kommerziell nutzt.

Gruß
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück