Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-04-2006, 18:25   #1 (permalink)
User
 
Benutzerbild von kolumnen
 
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();
kolumnen ist offline   Mit Zitat antworten
Alt 25-04-2006, 18:26   #2 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
ist doch logisch.. du rufst getBytesTotal ja erst auf, wenn die Datei geladen wurde (onLoad Handler)..
sebastian ist offline   Mit Zitat antworten
Alt 25-04-2006, 18:27   #3 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
nein
kolumnen ist offline   Mit Zitat antworten
Alt 25-04-2006, 18:30   #4 (permalink)
User
 
Benutzerbild von kolumnen
 
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.

:-(
kolumnen ist offline   Mit Zitat antworten
Alt 25-04-2006, 18:41   #5 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
doch natürlich

du musst irgendwie ein interval für den preloader setzen.. momentan wird nur der ladevorgang gestartet und wenn er fertig ist wird die gesamtgröße ausgegeben
sebastian ist offline   Mit Zitat antworten
Alt 26-04-2006, 10:41   #6 (permalink)
User
 
Benutzerbild von kolumnen
 
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...
kolumnen ist offline   Mit Zitat antworten
Alt 26-04-2006, 11:15   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
den total-wert erst, wenn fertig geladen.
Woher soll Flash auch die Gesamtgröße eines dynamischen Response erkennen, bevor er ganz geladen ist?
  Mit Zitat antworten
Alt 26-04-2006, 11:23   #8 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
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.
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 26-04-2006, 11:27   #9 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
Zitat:
Zitat von agedoubleju
Woher soll Flash auch die Gesamtgröße eines dynamischen Response erkennen, bevor er ganz geladen ist?
warum gibts denn dann bitte getBytesLoaded / getBytesTotal für das loadVars objekt wenn das deiner meinung nach nicht funktionieren soll?
solange die dynamischen daten komplett zurückkommen (ohne flush ) sollte das doch gehen oder nicht?

gruß martin
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 26-04-2006, 12:00   #10 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Zitat:
Zitat von madflanderz
onLoad wird definitiv nur EINMAL aufgerufen, nämlich wenn alles geladen wurde, so wie sebastian schon meinte
wir zwar nur einmal aufgerufen, aber trace(getBytesLoaded) gibt ja sehr wohl fortlaufend aufsteigende Werte aus, solange bei onLoad(success) success nicht true ist.

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:
Zitat von madflanderz
die abfrage während des ladens machste am besten mit nem mc.onEnterFrame
ein neuer ansatz, prima... also wie könnte das im beispiel funktionieren?
kolumnen ist offline   Mit Zitat antworten
Alt 26-04-2006, 12:05   #11 (permalink)
User
 
Benutzerbild von kolumnen
 
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.
kolumnen ist offline   Mit Zitat antworten
Alt 26-04-2006, 12:08   #12 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
also das kann ich kaum glauben.

Zitat:
onLoad (LoadVars.onLoad-Prozedur)
onLoad = function(success:Boolean) {}

Wird aufgerufen, wenn ein LoadVars.load()- oder LoadVars.sendAndLoad()-Vorgang zu Ende ist. Wenn der Vorgang erfolgreich war, werden die heruntergeladenen Variablen in my_lv eingefügt und sind bei Aufruf dieser Prozedur verfügbar.

Der Standardrückgabewert dieser Prozedur lautet undefined.

Diese Ereignisprozedur ähnelt XML.onLoad.

Verfügbarkeit: ActionScript 1.0; Flash Player 6

Parameter
success:Boolean - Ein Boolescher Wert, der angibt, ob der Ladevorgang erfolgreich war (true) oder fehlgeschlagen ist (false).

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() );
}
gruß maddin
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 26-04-2006, 12:28   #13 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Zitat:
Zitat von madflanderz
also das kann ich kaum glauben.
dagegen kann ich ja was tun.
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();
sieh und glaube! ;-)

also auf meinem rechner zumindest.... tut sich da was.
kolumnen ist offline   Mit Zitat antworten
Alt 26-04-2006, 12:42   #14 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Zitat:
Zitat von madflanderz
deshalb macht man die abfrage auch lieber mit eOF, kleines Beispiel
die Ausgabe mit onEnterframe haut hin, aber wie komm ich dann bloß aus der Ausgabe raus.. ich habe dann ja kein (success) mehr... (dafür brauche ich das eof, oder? In der Flashhilfe findet man seit der letzten Version ja leider keine normalen Suchbegriffe mehr, weil einem so gut wie alles als Treffer ausgegeben wird.... grrr)
kolumnen ist offline   Mit Zitat antworten
Alt 26-04-2006, 13:15   #15 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
du baust im eOF(onEnterFrame) noch ne abfrage ein

wenn alles geladen
delete this.onEnterFrame;
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz 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 21:45 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele