Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-09-2003, 13:59   #1 (permalink)
Neuer User
 
Benutzerbild von zickzackzorro
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 116
AS-Preloader mit "_framesloaded" funktioniert nicht ganz

Ich versuche zur Zeit eine Website mit Flash zu erstellen, auf der man sich Videos anschau'n kann. Test auf www.video-ist.de/test (bis jetzte funktionieren nur die unteren 2 Buttons links). Dort gibt's einen Hauptfilm über den ich über loadmovie einen Preloader und eine video.swf einlade.


der unterste Button im Hauptfilm sieht folgendermassen aus:

on (press) {
_root.a = 4;
createEmptyMovieClip(_root.a, 1);
_root[_root.a].loadMovie("videos/video"+_root.a+".swf");
_root[_root.a]._x = _root.x;
_root[_root.a]._y = _root.y;
createEmptyMovieClip(0, 2);
_root[0].loadMovie("preloader.swf");
_root[0]._x = _root.x;
_root[0]._y = _root.y;
gotoAndStop(2);
}

... wodurch die video4.swf und der preloader geladen wird.


Der Preloader sieht folgendermassen aus:

fl = _root[_root.a].video._framesloaded;
tf = _root[_root.a].video._totalframes;
prozent = Math.ceil(fl/tf*100);

... wobei auf die Frames im _root[4].video zugegriffen werden soll. Die Prozentangabe wird als dynamischer Text ausgegeben.


Wenn die video.swf allerdings noch nicht komplett geladen ist, kann der Preloader nicht auf die Werte _root[4].video._framesloaded bzw. _root[4].video._totalframes zugreifen. Er gibt aus NaN > "Not a Number". Wenn die video.swf allerdings einmal im Cache ist, kann drauf zugegriffen werden und es wird 100% ausgegeben. Weiß jemand Rat?

Schöne Grüße,
Tobias
zickzackzorro ist offline   Mit Zitat antworten
Alt 10-09-2003, 14:54   #2 (permalink)
anyway
Gast
 
Beiträge: n/a
Du lädtst zuerst die Video swf und dann die Preloader swf - in dem Fall wird natürlich in der Reihenfolge geladen, in der die Ladeanweisungen geschrieben werden. Umgekehrt wäre in diesem Fall dann sinnvoller, weil so wie Du es gemacht hast, der Preloader ja erst nach dem Film geladen wird, den er eigentlich preloaden soll..

Darüber hinaus, benutzt Du createEmptyMovieClip nicht richtig, da als erstes Argument keine Pfadangabe, sondern ein Instanzname in Form eines Strings erwartet wird:

Ich würde das sowieso völlig anders machen...

ActionScript:
  1. // _root.a muß ein MovieClip sein, der bereits im Film
  2. // existiert
  3. //
  4. on (release) {
  5. _root.a.createEmptyMovieClip("preloader",1);
  6. _root.a.createEmptyMovieClip("vid",2);
  7. // Ladeanweisung
  8. _root.a.vid.loadMovie("video.swf");
  9. // deklarieren einer preloader Funktion, die
  10. // gemäß der eingestellten Framerate des Films
  11. // soundsoviel Mal pro Sekunde ausgeführt wird
  12. //
  13. _root.a.preloader.onEnterFrame = function () {
  14. // speichern des Pfads zum Filmcontainer für
  15. // die video.swf in der lokalen Variablen t
  16. //
  17. var t = this._parent.vid;
  18. // speichern der geladenen Bytes
  19. // von t in der lokalen Variablen ldd
  20. //
  21. var ldd = t.getBytesLoaded();
  22. // speichern der Gesamtgröße in Bytes
  23. // von t in der lokalen Variablen ttl
  24. //
  25. var ttl = t.getBytesTotal();
  26. // speichern des Werts der geladenen
  27. // Prozent in der lokalen Variablen perc
  28. //
  29. var perc = 100/ttl*ldd;
  30. // Ausgabe zum testen, welchen Wert perc
  31. // annimmt
  32. //
  33. trace(perc);
  34. // prüfen, ob ldd gleich ttl ist
  35. // wenn ja, heißt daß der Film ist fertig geladen
  36. //
  37. // in diesem Fall wird dann der onEnterFrame
  38. // gelöscht und danach der preloader entfernt,
  39. // da seine Arbeit hier erfüllt ist.
  40. //
  41. if (ldd==ttl&&ttl>4) {
  42. delete this.onEnterFrame;
  43. this.removeMovieClip();
  44. }
  45. }
  46. }

Ich hoffe mal, daß ist nicht zu kryptisch für Dich..
Wenn ich Dir einen Tipp geben darf: Schau Dir bitte die Actionscript-Referenz Deines Flashs an, und recherchier, wie die einzelnen im Script enthaltenen Objekte benutzt werden - in Deinem Script sind substanzielle Fehler, die darauf schließen lassen, daß Du noch nicht so ganz den Durchblick hast - also erst ein bißchen lernen und dann coden - ansonsten wirst Du AS nie so recht durchschauen können.

anyway.

Edit:


Habe die Ladeanweisung im Code vergessen und in der dritten Zeile ergänzt!!



Geändert von anyway (10-09-2003 um 14:57 Uhr)
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele