Byte Anzahl für dynamisch reingeladene JPG's

kaitheo

Mitglied
Hallo,
ich lade mit dieser Funktion mehrere Bilder in neue MovieClips, was auch prima funktioniert. Zum Verständis: Die BilderUrls befinden sich peopleRay[0][i], wobei peopleLang die Länge des Arrays peopleRay wiedergibt.
Leider will mir das Script die Dateigröße des Bildes nicht auslesen (Zeile 4). Diese benötige ich aber für eine anschließende Preloader-Funktion.
PHP:
1: for (i=0; i<peopleLang; i++) {
2: _root.createEmptyMovieClip("placeholder"+i, i);
3: _root["placeholder"+i].loadMovie("people/"+peopleRay[i][0]);
4: trace(_root["placeholder"+i].getBytesTotal()); // hier wird immer 0 angezeigt
5: }

Wo liegt der Fehler? Vielen Dank für Eure Hilfe
 
Die Größe eines Bildes erhält man erst wenn man es schon einige Zeit lädt.
Also in etwa so:
PHP:
var url = "hieristmeinbild.jpg";
containerMc.loadMovie( url );
loaderMc.onEnterFrame = function ()
{
   var t = containerMc.getBytesLoaded ()
   var l = containerMc.getBytesTotal ()
   if ( t > 100 )
   {
      // jetzt erst weißt Du wie groß dein Bild ist, 
      // bevor Flash die Contentlength mitbekommt, 
      // denkt es gerne mal das ein Bild -1, 0 
      // oder bei swfs um die 40 Kilobyte groß ist.
     if ( t == l )
     {
         trace ( "fertig mit laden" )
         delete loaderMc.onEnterFrame
      }
   }
}
 
Ja das ist auch so ziemlich die Funktion, die ich als Preloader verwendet habe. Ich hab mich glaub ich schlecht ausgedrückt, denn das Problem liegt wahrscheinlich eher an der For Schleife.

Wenn ich die onEnterFrame Funktion in die For-Schleife miteinbau, so wird diese Funktion leider nicht jedes Frame aufgerufen, sondern nur einmal. (passiert auch, wenn ich die Funktion als prototype definier und in der For-Schleife aufrufe)

PHP:
1: for (i=0; i<peopleLang; i++) {
2: _root.createEmptyMovieClip("placeholder"+i, i);
3: _root["placeholder"+i].loadMovie("people/"+peopleRay[i][0]);
4: _root["placeholder"+i].onEnterFrame= function() {
5:	 var geladen = this.getBytesLoaded();
6:	 var zuladen = this.getBytesTotal();
7:	 trace (geladen); // hier wird pro Placeholder nur einmal 0 angezeigt
8:		if (geladen>=100) {
9:		   if (>bedingung<) { //ich glaub deine Bedingung ist falsch, oder?
10:		   //laden fertig
11:		  }
12:	   }
13:	};
14: }
 
Bin selber dahintergekommen:
onEnterFrame Funktionen funktionieren scheinbar nicht gescheit, wenn man sie aus einer For-Schleife liest. Hab das ganze jetzt so umgemodelt, dass die komplette Funktion nicht mehr in einer For Schleife steckt, sondern in einer onEnterFrame Funktion.
 
Zurück