Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-02-2005, 16:00   #1 (permalink)
dreckiger harald
 
Benutzerbild von bluesbaker
 
Registriert seit: Oct 2001
Ort: lünegurker heide
Beiträge: 541
getBytesLoaded in for-schleife

ActionScript:
  1. for (a=0; a<_root[_global.arr_ber].length; a++) {
  2.  
  3.             bildgeladen = _root.ani.inhalt.bildcon["bild"+a].getBytesLoaded();
  4.  
  5.             bildzuladen = _root.ani.inhalt.bildcon["bild"+a].getBytesTotal();
  6.  
  7.             /*while (bildzuladen<100) {
  8.                 bildzuladen = _root.ani.inhalt.bildcon["bild"+a].getBytesTotal();
  9.              }*/
  10.  
  11.             _root.dreck = _root.dreck+a+": "+bildzuladen+"<br>";
  12.  
  13.             geszuladen = geszuladen+bildzuladen;
  14.  
  15.             gesgeladen = gesgeladen+bildgeladen;
  16.  
  17.         }

ich versuche gerade, bis zu 20 bilder (je ca.10kb) in einer schleife laden zu lassen.
klappt auch.

die for schleife oben soll die getBytesLoaded zusammenzählen für den gemeinsamen ladebalken - das obige script steht in einem onEnterframe

ich kriege aber beim ersten aufruf (ISDN) jeweils max 2 werte (lass mir das in einem textfeld anzeigen)

wenn ich jetzt im film wechsele und dann wieder zurückklicke zu galerie, sind es schon mehr (je nachdem, wie lange ich warte).
also geladen wird schon alles.
nur so wie's im moment ist, ist der ladebalken eben nach nur 2 bildern auf 100% und es wird eine galerie gezeigt, die noch nicht fertig geladen ist.

da auskommentierte "while" bringt den flashfilm zum abschmieren - die fehlermeldung mit dem verlangsamten rechner...

ich bin dankbar für einen guten tipp!


gruss bluesbaker
__________________
Just because you’re paranoid doesn’t mean they’re not out to get you.
---------------------
www.rasterfahnder.de
--------------------------------

bluesbaker und wie er die welt sah
sushicorner---lo-fi-dirt-rock

coming soon:
lonesome media
bluesbaker ist offline   Mit Zitat antworten
Alt 01-02-2005, 19:37   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
"geszuladen" solltest du vorher errechnen...

BTW: wird das Laden auch kontinuierlich, bspw. über einen onEnterFrame überprüft? Nur die Schleife alleine reicht natürlich nicht...
  Mit Zitat antworten
Alt 01-02-2005, 19:50   #3 (permalink)
dreckiger harald
 
Benutzerbild von bluesbaker
 
Registriert seit: Oct 2001
Ort: lünegurker heide
Beiträge: 541
der prinzipielle aufbau sieht folgendermaßen aus:
es gibt die funktion ladeproducts, die in einer for-schleife die bilder lädt.
und die funktion ladestatus, die am ende von ladeproducts aufgerufen wird
und eben den ladebalken ansteuern soll.
ich vermute, das der aufruf von ladestatus schon erfolgt, bevor er alle bilder geladen hat, bzw alle ladevorgänge gestartet hat.
ActionScript:
  1. ladestatus = function () {
  2.     _root.preload.loader.onEnterFrame = function() {
  3.        
  4.         geszuladen = 0;
  5.         gesgeladen = 0;
  6.         for (a=0; a<_root[_global.arr_ber].length; a++) {
  7.             bildgeladen = _root.ani.inhalt.bildcon["bild"+a].getBytesLoaded();
  8.             _global.bildzuladen = _root.ani.inhalt.bildcon["bild"+a].getBytesTotal();
  9.             _root.dreck = _root.dreck+a+": "+_global.bildzuladen+"<br>";
  10.             geszuladen = geszuladen+_global.bildzuladen;
  11.             gesgeladen = gesgeladen+bildgeladen;
  12.         }
  13.        
  14.         geladen = gesgeladen;
  15.         zuladen = geszuladen;
  16.         if (gesgeladen>=6) {
  17.             _root.preload._visible = true;
  18.             prozent = Math.round(geladen/zuladen*100);
  19.             this._yscale = prozent;
  20.             if (prozent<100) {
  21.                 _root.ani.gotoAndStop(1);
  22.             }
  23.             if (prozent>=100) {
  24.                 _root.ani.play();
  25.                
  26.                 delete this.onEnterFrame;
  27.                 _root.preload._visible = false;
  28.             }
  29.         }
  30.     };
  31. };
  32. function ladeproducts(bereich, pfad) {
  33.     _global.arr_ber = bereich;
  34.     for (a=0; a<_root[bereich].length; a++) {
  35.         _root.ani.inhalt.bildcon.createEmptyMovieClip("bild"+a, a+1);
  36.         ////////////////////////////////////////////////////////////////////////////////
  37.         _root.ani.inhalt.bildcon["bild"+a].loadMovie(pfad+"/"+_root[bereich][a][0]+".jpg");
  38.         ////////////////////////////////////////////////////////////////////////////////
  39.        
  40.     }
  41.    
  42.     ladestatus();
  43. }

gruss bluesbaker
__________________
Just because you’re paranoid doesn’t mean they’re not out to get you.
---------------------
www.rasterfahnder.de
--------------------------------

bluesbaker und wie er die welt sah
sushicorner---lo-fi-dirt-rock

coming soon:
lonesome media
bluesbaker ist offline   Mit Zitat antworten
Alt 01-02-2005, 19:58   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
ich vermute, das der aufruf von ladestatus schon erfolgt, bevor er alle bilder geladen hat
Na klar, Flash wartet doch nicht sekundenlang, bis ein Film nachgeladen ist. Gerade deshalb gibt es doch die Preloader, die sollen ja gerade diesen Ladevorgang überprüfen.

Flash setzt nur die loadMovie-Befehle ab und geht dann zum nächsten Befehl, dem Start der Funktion. Ist ja auch im Prinzip so richtig, denn damit wird das Überwachen gestartet. Nur die Gesamtzahl aller zu ladenden Bytes steht zu diesem Zeitpunkt noch gar nicht fest, deswegen war ja auch mein Vorschlag, dass du den per Hand ausrechnest und als Konstante einsetzt.
  Mit Zitat antworten
Alt 01-02-2005, 20:13   #5 (permalink)
dreckiger harald
 
Benutzerbild von bluesbaker
 
Registriert seit: Oct 2001
Ort: lünegurker heide
Beiträge: 541
das ganze ist für eine galerieseite, die per XML gefüttert wird. ich weiß im vorhinein garnicht, wieviele bilder ich im jeweiligen ordner habe (bis zu 20) und wieviel kb pro bild da kommen (hängt dann davon ab, wie der kunde die bilder vorkomprimiert)
da muss ich das rechnen schon flash überlassen können

he... MX, schau mal nach wieviel bilder du laden musst, rechne das zusammen und mach mir nen schööönen ladebalken für alles

(wann kommt die sprachsteuerung für flash?)

bluesbaker
__________________
Just because you’re paranoid doesn’t mean they’re not out to get you.
---------------------
www.rasterfahnder.de
--------------------------------

bluesbaker und wie er die welt sah
sushicorner---lo-fi-dirt-rock

coming soon:
lonesome media
bluesbaker ist offline   Mit Zitat antworten
Alt 01-02-2005, 20:22   #6 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
Zitat:
Zitat von bluesbaker
ich kriege aber beim ersten aufruf (ISDN) jeweils max 2 werte (lass mir das in einem textfeld anzeigen
Ich meine gehört/gelesen zu haben, dass Browser (alle?) nur zwei Dateien gleichzeitig laden (können/dürfen?) also bevor überhaupt die dritte anfängt zu laden warten, bis wieder ein "Platz" frei ist.

Bis dahin ist für die dritte Datei getBytesLoaded _und_ getBytesTotal 0 und damit gleich 100%. Zusammengerechnet wenn die ersten zwei geladen sind dann auch und los geht's obwohl das dritte, vierte, fünfte etc. Bild noch fehlt.

Das wäre zumindest eine Erklärung für dieses Phänomen, wenn auch keine Lösung.
Wäre auch eine Erklärung dafür, dass auf vielen Galerieseiten Preloader die Bilder nacheinander laden und dies auch anzeigen, quasi Bild 1 Ladestart -> Anzeige -> 100% fertig -> Bild2 Ladestart -> Anzeige -> 100% fertig -> usw.

Ist dir jetzt keine große Hilfe, ich weiß. Aber vielleicht ein Hinweis dafür, dass es nicht unbedingt am Script liegt.
Und ich lass mich auch gern eines besseren belehren ...

Gruß
Rena
__________________
www.rena-hermann.de

The angels have the phone box

Geändert von rena (01-02-2005 um 20:24 Uhr)
rena ist offline   Mit Zitat antworten
Alt 01-02-2005, 20:50   #7 (permalink)
dreckiger harald
 
Benutzerbild von bluesbaker
 
Registriert seit: Oct 2001
Ort: lünegurker heide
Beiträge: 541
@rena
ja nun...daran hab ich noch gar nicht gedacht.

andererseits kann er sie meinetwegen ja ruhig hintereinander weg laden, aber dann bitte mit gemeinsamen ladebalken (der dann wohl immer ein bisschen rauf und runterzuckelt) und eben erst weitergeht, wenn alle bilder geladen sind.

wenn alles nicht funzt, muss ich eben fragen ob das letzte bild geladen ist. wär aber nicht so elegant

gruss bluesbaker
... dann eben noch ein bisserl try&error
__________________
Just because you’re paranoid doesn’t mean they’re not out to get you.
---------------------
www.rasterfahnder.de
--------------------------------

bluesbaker und wie er die welt sah
sushicorner---lo-fi-dirt-rock

coming soon:
lonesome media
bluesbaker ist offline   Mit Zitat antworten
Alt 01-02-2005, 21:24   #8 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
Zitat:
Zitat von bluesbaker
andererseits kann er sie meinetwegen ja ruhig hintereinander weg laden, aber dann bitte mit gemeinsamen ladebalken (der dann wohl immer ein bisschen rauf und runterzuckelt) und eben erst weitergeht, wenn alle bilder geladen sind.
Das scheitert vielleicht eben gerade an o.g. Problem, wenn das so stimmt was ich gehört/gelesen hab.
Eine Möglichkeit wäre jedoch auch, dass du die Anzahl der Bilder mit als Variable übernimmt (geht das mit php? Oder per Anzahl der entsprechenden xml-Tags? Ich denke schon), jedes Mal wenn für eine Datei getBytesLoaded größer 0 wird, einen Zähler hochsetzt und wenn Zähler=Anzahl der Dateien und dann noch insgesamt 100% -> los geht's.

Nur so als Ansatz ... wobei der Ladebalken dann vermutlich nicht nur etwas, sondern recht heftig rauf und runter zuckelt ... kannst gleich 'ne Fakeanzeige nehmen.
Und wie gesagt nur dann, wenn mein Hörensagen-Wissen (kann dir nicht mal 'ne Quelle nennen) bzgl. der Ladebegrenzung des Browsers stimmt.

Gruß
Rena
__________________
www.rena-hermann.de

The angels have the phone box
rena ist offline   Mit Zitat antworten
Alt 01-02-2005, 21:53   #9 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Da man beim jeweiligen Nutzer kaum beeinflussen kann, ob sein Browser zwei oder mehr Downloads gleichzeitig erlaubt, solltest du in den sauren Apfel beißen und schön brav alle Filme hintereinander laden, z.B. erst einmal einen loadMovie und wenn der Preloader anzeigt, dass alles geladen wurden, dann den nächsten starten etc...
  Mit Zitat antworten
Alt 02-02-2005, 07:47   #10 (permalink)
dreckiger harald
 
Benutzerbild von bluesbaker
 
Registriert seit: Oct 2001
Ort: lünegurker heide
Beiträge: 541
jetzt funzt es

am anfang bei onEnterFrame eine variable check=0;

dann in der for schleife diese variable auf 1 setzen, wenn die geladen bytes kleiner 10 sind
am ender der onEnterframe-funktion:

ActionScript:
  1. if (prozent>=100 && check==0) {
  2.                 _root.ani.play();
  3.                
  4.                 delete this.onEnterFrame;
  5.                 _root.preload._visible = false;
  6.             }

eigentlich ganz simpel...


PS: ich lasse mir die geladenen bytes in einem textfeld untereinander ausgeben. dabei hab ich festgestellt, der er die bilder nicht unbedingt in der reihenfolge der loadmovie-aufrufe lädt...

das heißt, manchmal lädt er bild 5 zuerst, manchmal sogar das letzte.


gruss bluesbaker
__________________
Just because you’re paranoid doesn’t mean they’re not out to get you.
---------------------
www.rasterfahnder.de
--------------------------------

bluesbaker und wie er die welt sah
sushicorner---lo-fi-dirt-rock

coming soon:
lonesome media
bluesbaker ist offline   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 14:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele