Probleme mit getBytesLoaded und getBytesTotal

Alphamandal

Grünschnabel
Hi,

versuche seit einem guten Tag meinen Loader zum Laufen zu bringen und scheitere dabei an getBytesLoaded und getBytesTotal. Diese Werte sind bei mir immer gleich(daher klappt der ganze Loader auch nicht).

Ich erstelle mir für jedes Bild einen eigenen Container:
Code:
  createEmptyMovieClip("bilder",1);
     
      for (var i=1;i<anz+1;i++)
      {
          bilder.createEmptyMovieClip(i,i);
      }

danach werden die Bilder in die Container geladen
Code:
  bilder[i].loadMovie (location+i+".jpg");

zum Schluß möchte ich noch den Ladefortschritt auslesen:
Code:
  var geladen = bilder[i].getBytesLoaded(); //Geladen
  var gesamt = bilder[i].getBytesTotal(); //Gesamt

Die Bilder werden wunderbar geladen, die Ladeanzeige funktioniert auch(nur eben nicht richtig ==> die Ladeanzeige ist bei 100% und die Bilder laden noch).

Kann mir bitte jemand helfen

Danke

Alphamandal
 
Zuletzt bearbeitet:
Hi,

die Ausgabe sieht derzeit so aus

ausgabe1.text=int(i-1) + " von " + anz + " Bilder geladen" + geladen + "/" + gesamt;



MFG

Alphamandal
 
Und was ist daran falsch...

sorry, aber wir können ncih hellsehen (und es ist nich grad angenehm dir alles aus der Nase ziehen zu müssen)
 
Hi,


es funktioniert nicht richitg.
Laut der Anzeige sind alle Bilder geladen, in Wirklichkeit werden sie aber erst geladen.

Hab einmal das gesamte Actionscript angefügt welches für den Vorgang zuständig ist.
Code:
 //DEFINITIONEN ANFANG
 //*******************************************************//
 location="photos/wdms/technik/resize/image";
 anz=40;
 //*******************************************************//
 abstand=125;
 posy1=250;
 xstart1=24;
 l=1;
 //DEFINITIONEN ENDE
 
 //Laufvariable auf 1 setzen
 i=1;
 
 //Container erzeugen
 create();
 
 //Erstes Bild laden
 loader();
 
 //Ladeanzeige aufrufen
 preloader();
 
 
 
 
 
 
 
 
 function create()
 {
     //HAUPTCONTAINER ERSTELLEN
     createEmptyMovieClip("bilder",1);
     //BILDCONTAINER ERSTELLEN
     for (var i=1;i<anz+1;i++)
     {
         bilder.createEmptyMovieClip(i,i);  
     }
 }
 
 //Unterprogramm um Bilder zu laden und zu platzieren
 function loader()
 {
 
 bilder[i]._alpha=0;    //Bilder ausblenden
 
 //Positionierungsroutine
 if(i==9)
 {
 l=1;
 posy1=350;
 }
 if(i==17)
 {
 l=1;
 posy1=450;
 }
 if(i==25)
 {
 l=1;
 posy1=550;
 }
 if(i==33)
 {
 l=1;
 posy1=650;
 }
 //Ende der Positionierungsroutine
 
 //Bild laden und positionieren
 bilder[i]._x=xstart1+(abstand*(l-1));
 bilder[i]._y=posy1;
 bilder[i].loadMovie (location+i+".jpg");
 
 //Abstandslaufvariable incrementieren
 l++;
 
 }
 //ENDE des Unterprogrammes um Bilder zu laden und zu platzieren
 
 
 //*************************************************************************************************//
 
 
 
 
 
 
 //Ladeanzeige
 function preloader() {
    this.onEnterFrame = function() {
         var geladen = bilder[i].getBytesLoaded(); //Geladen
         var gesamt = bilder[i].getBytesTotal(); //Gesamt
         ausgabe1.text=int(i-1) +" von "+ anz +" Bilder geladen"+geladen+"/"+gesamt; //Anzeige wieviele Bilder bereits geladen wurden
                 
         //nächstes Bild laden?
         if(gesamt==geladen)
         {
             bilder[i]._alpha=100;    //Bild aktivieren
         
             if(i<anz)
             {
                 i++;        //Bilderlaufvariable incrementieren
                 loader();    //Bild laden
             }
         if(i==anz)
         {
             ausgabe1.text="Alle Bilder geladen"; //Anzeige wenn alle Bilder geladen sind
         }
         }
     }
 }
 
 
 
 
 //################################################################################################//
 
Du kannst ja auch nich ne globale Variable i und eine in ner for-Schleife haben... benenn mal eins von beiden um.
 
Stimmt irgendwie :-)
Habe i daher nach der FOR Schleife wieder auf 1 zurück gesetzt, aber irgendwie funktioniert das ganze noch immer nicht richtig. Was mich auch etwas verwundert ist, dass es beim 2ten Aufruf am Webserver zu funktionieren scheint. Ab dem 2ten mal funktioniert getBytesTotal richtig, getBytesLoaded liefert soweit ich das erkennen kann immer den selben Wert wie getBytesTotal.
Habe jetzt noch einige Seiten durchforstet und immer wieder was von delete this.onEnterFrame gefunden. Fehlt mir das(habe es mal eingefügt, aber entweder an der falschen Stelle oder es bringt nix)?
 
Hi,

du brauchst bei mehrerern Dateien entweder für jede Datei eine eigene Statusüberwachung mit onEnterFrame, oder Du lässt in einer onEnterFrame-Methode eine Schleife laufen, die den Status aller Dateien überprüft. Die fertig geladenen Dateien kannst Du zusammenzählen.

Das hier:
Code:
var geladen = bilder[i].getBytesLoaded(); //Geladen
var gesamt = bilder[i].getBytesTotal(); //Gesamt
ausgabe1.text=int(i-1) +" von "+ anz +" Bilder geladen"+geladen+"/"+gesamt; //Anzeige wieviele Bilder bereits geladen wurden
wird auch mit einer eigenen Schleife nicht funktionieren, da in "i" nicht die Anzahl der fertig geladenen Dateien steht.

Tipp: Schau mal in den Sammelthread und dort nach dem "Multiloader". Der Code in den verschiedenen Versionen sollte Dir einen Überblick verschaffen, wie man dieses Problem angeht.

Gruß

P.S.: Poste Code bitte in CODE- oder PHP-Blöcken - in der Standardschriftart und ohne Einrückung ist das echt schwer zu lesen.
.
 
Hi,

danke für deine Antwort. Habe mir diesen Loader angeschaut nur leider bin ich noch recht unerfahren in Punkto Actionscript und verstehe leider nur Bahnhof bei deinem Loader :-( .

MFG
Alphamandal
 
Zurück