| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| User Registriert seit: Jan 2002
Beiträge: 174
| LoadVars.getBytesTotal() zu spät bekannt
Ich kriege es nicht hin, den getBytesTotal-Wert eingeladener LoadVars angezeigt zu bekommen, bevor nicht die ganze Datei geladen ist. Ist das gar nicht möglich? Eigentlich geht meine Frage aber sogar noch weiter. Mittels folgenden Konstrukts lade ich aus diversen Quellen (ähnliche) Datensätze, und es geht erst weiter, wenn wirklich alles fertig geladen ist. Soweit so gut. Ein Preloader hierfür wäre aber auch nicht übel, je nach Datenmenge / Verbindung kann sowas ja ne Weile dauern. Ich kann die loadvars, die ich unten in einen array stecke, ansprechen. aDatenSaetze[i].getBytesLoaded() gibt einen wohl korrekten Wert aus. Jedoch: aDatenSaetze[i].getBytesTotal() erhalte ich immer erst, wenn bereits erreicht. :-( Doof. Das ergibt, bevor nicht alles geladen ist, scheinbar willkürlich mal gar nicht aus, mal "0", mal "undefined"... seufz. Mal im Detail der Code, in den ich gerne nen preloader für die verschiedenen loadvars einbauen würde: Code: var pending = 0;
aDatenSaetze = new Array();
function fDatenLaden(datin,datex){
pending++;
lv = new LoadVars();
lv.onLoad = onLoadHandler;
aDatenSaetze.push(lv);
lv.load( _root.aDaten[datin][datex] );
}
function onLoadHandler(success){
trace (lv.getBytesTotal());
if (success) {
if ( --pending == 0) {
gotoAndPlay(_currentframe + 1);
}
}
}
function fLaden(){
for (i=0;i<vAnzahl;i++) {
fDatenLaden(i,0);
fDatenLaden(i,1);
}
}
fLaden();
stop(); |
| | |
| | #4 (permalink) |
| User Registriert seit: Jan 2002
Beiträge: 174
|
...oder? ich denke nicht. Das kann ich ja mit aDatenSaetze[i].getBytesLOADED() gut nachvollziehen. Da passiert was, und zwar genau das, was passieren sollte: es wird ausgegeben, was schon geladen wurde. Nur mit aDatenSaetze[i].getBytesTOTAL() klappt das eben nicht - da kriege ich erst was zurück, wenn aDatenSaetze[i].getBytesLOADED() mit aDatenSaetze[i].getBytesTOTAL() übereinstimmt - und dann brauche ich den Wert natürlich nicht mehr. :-( |
| | |
| | #6 (permalink) |
| User Registriert seit: Jan 2002
Beiträge: 174
|
neee, onLoad ist ja nicht erst bei Erfolg tätig, sondern eben während des Ladens. wie gesagt: getBytesLoaded() gibt ja durchaus aufsteigende werte aus. mein einziges problem: ich kenne den total-wert erst, wenn fertig geladen. ich versuch mal, das problem einzugrenzen und ne fla zu posten, damit das klar wird... |
| | |
| | #8 (permalink) |
| a.k.a maddin79 Registriert seit: Jul 2003 Ort: berlin f-hain
Beiträge: 1.693
|
onLoad wird definitiv nur EINMAL aufgerufen, nämlich wenn alles geladen wurde, so wie sebastian schon meinte die abfrage während des ladens machste am besten mit nem mc.onEnterFrame gruß martin.
__________________ |
| | |
| | #9 (permalink) | |
| a.k.a maddin79 Registriert seit: Jul 2003 Ort: berlin f-hain
Beiträge: 1.693
| Zitat:
solange die dynamischen daten komplett zurückkommen (ohne flush ) sollte das doch gehen oder nicht? gruß martin
__________________ | |
| | |
| | #10 (permalink) | ||
| User Registriert seit: Jan 2002
Beiträge: 174
| Zitat:
wie auch immer. es geht ja vor allem um einen preloader für das einlesen mehrerer datenquellen - WIE das zu lösen ist, ist ja eine ganz andere frage, womöglich. Zitat:
| ||
| | |
| | #11 (permalink) |
| User Registriert seit: Jan 2002
Beiträge: 174
|
probiere weiter herum... habe mal größere dateien zum testen genommen... interessanterweise funktioniert das ganze auf einmal doch. getBytesTotal() wird dann sehr wohl erkannt, während getBytesLoaded() noch ansteigt... allerdings natürlich erst, wenn überhaupt begonnen wurde, die entsprechende Datei zu laden. Das ist also nicht so praktikabel, da ich so beim Einladen von Daten aus mehreren Quellen in Schleife zu Beginn kaum jemals den total-Wert aller Quellen ermitteln kann. Schade. |
| | |
| | #12 (permalink) | |
| a.k.a maddin79 Registriert seit: Jul 2003 Ort: berlin f-hain
Beiträge: 1.693
|
also das kann ich kaum glauben. Zitat:
deshalb macht man die abfrage auch lieber mit eOF, kleines Beispiel Code: this.onEnterFrame = function (){
trace(this.aDatenSaetze[0].getBytesLoaded() + " von " + this.aDatenSaetze[0].getBytesTotal() );
}
__________________ | |
| | |
| | #13 (permalink) | |
| User Registriert seit: Jan 2002
Beiträge: 174
| Zitat:
lege, wenn du magst, größere testdateien bei dir ab und dazu AS nach diesem schema starten... Code: var pending = 0;
aDatenSaetze = new Array();
function fDatenLaden(datensatz){
pending++;
lv = new LoadVars();
lv.onLoad = onLoadHandler;
aDatenSaetze.push(lv);
lv.load( "http://www.deinedomain.de/"+datensatz+".txt" );
}
function onLoadHandler(success){
trace ( "0: getBytesLoaded: "+ aDatenSaetze[0].getBytesLoaded() + ", getBytesTotal: "+ aDatenSaetze[0].getBytesTotal());
trace ( "1: getBytesLoaded: "+ aDatenSaetze[1].getBytesLoaded() + ", getBytesTotal: "+ aDatenSaetze[1].getBytesTotal());
trace ( "2: getBytesLoaded: "+ aDatenSaetze[2].getBytesLoaded() + ", getBytesTotal: "+ aDatenSaetze[2].getBytesTotal());
trace ( "3: getBytesLoaded: "+ aDatenSaetze[3].getBytesLoaded() + ", getBytesTotal: "+ aDatenSaetze[3].getBytesTotal());
if (success) {
if ( --pending == 0) {
gotoAndPlay(_currentframe + 1);
}
}
}
function fLaden(){
for (i=0; i<4;i++) {
fDatenLaden("test1");
fDatenLaden("test2");
fDatenLaden("test3");
fDatenLaden("test4");
}
}
fLaden();
stop(); also auf meinem rechner zumindest.... tut sich da was. | |
| | |
| | #14 (permalink) | |
| User Registriert seit: Jan 2002
Beiträge: 174
| Zitat:
| |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |