Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-03-2006, 14:05   #1 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Schleife mit mehreren loadvars .. if(success) ?

Wenn ich mehrere eingelesene Datensätze in verschiedenen Variablen ablegen will - und erst weitermachen im Flash, wenn die Daten wirklich da sind, wie kann ich das lösen?

Ich habe doch Probleme damit, dieses Schema in eine Schleife zu übertragen, die funktioniert... aber das kann klappen, oder?

Also statt sowas:

lvDat = new LoadVars();
lvDat.onLoad = function(success) {
if(success){
gotoAndPlay(_currentframe + 1);
}
}

function fDatenLaden(was){
lvDat.load(was);
}
fDatenLaden(eval("Daten"+i);

habe ich i Datensätze, die ich in _root["lvDat"+i] einlesen möchte, und es soll erst weitergehen, wenn alle i Datensätze eingelesen sind... da komme ich nicht weiter. :-(
Wenn ich das alles einfach komplett schleife, da haut nicht hin, weil schon beim ersten fertig geladenen Datensatz natürlich das success greift und es weitergeht... puh...

Weiß jemand Rat?
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 14:43   #2 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
vielleicht ja son murks hier :

PHP-Code:
var datenArray:Array = new Array("hans.txt","seppel.txt","pater.txt");
var 
loaded:Boolean false;

for(var 
i:Number 0;i<datenArray.length;i++){
   
fDatenLaden(datenArray[i]);
   if(
i==datenArray.length-1)
   
loaded true
}


lvDat = new LoadVars();
lvDat.onLoad = function(success) {
    if(
success && loaded){
        
gotoAndPlay(_currentframe 1);
    }
}
   
function 
fDatenLaden(was){
    
lvDat.load(was);

mojave ist offline   Mit Zitat antworten
Alt 10-03-2006, 15:22   #3 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Danke.

Aber das loaded = true bedeutet ja nur, dass alle drei Datensätze geladen werden, nicht dass alle fertig geladen sind, das Problem löst das daher nicht, wenn ich richtig verstehe.

Zudem wird hier nur ein lvDat auf success geprüft, ich habe ja das Problem, dass ich lvDat1, lvDat2 ... bestücken möchte und wissen möchte, ob alle fertig sind.

:-(
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 16:56   #4 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
aber das success heißt, dass es galaden ist
PHP-Code:
if(success && loaded){ 
mojave ist offline   Mit Zitat antworten
Alt 10-03-2006, 16:56   #5 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
keiner einen Tipp? :-)
das Laden ist kein Problem, wenn ich nicht irre:

Code:
function fDatenLaden(wieoft,daten){
	_root["lvData"+wieoft] = new LoadVars();
	_root["lvData"+wieoft].load(daten);
}

for (i=0;i<vDatensaetze;i++){
	fDatenLaden(i,_root.aDaten[i][1]);
}
Das Problem ist aber, jetzt rauszufinden, wann alle Daten da sind. :-(
Wie kriege ich bloß if(success) auf alle lvData s angewendet?

Was eben leider - natürlich - nicht funktioniert, ist (mein erster Ansatz) im nächsten Frame sowas:

Code:
for (i=0;i<vDatensaetze;i++){
	_root["lvData"+i].onLoad = function(success) {
	    if(success){
       		// gotoAndPlay(_currentframe + 1);
	    }
		else {
			trace ( i + " noch nicht fertig");
			gotoAndPlay(_currentframe - 1);
		}
	}
}
Aber wie sonst?
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 16:59   #6 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Zitat:
Zitat von mojave
aber das success heißt, dass es galaden ist
PHP-Code:
if(success && loaded){ 
aber das success bezieht sich bei dir ausschließlich auf den letzten datensatz, der geladen werden soll und nicht auf alle datensätze? damit weiß ich also nicht, ob die vorherigen datensätze fertig geladen sind, oder?
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 17:06   #7 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Unhappy

Zitat:
Zitat von mojave
aber das success heißt, dass es galaden ist
PHP-Code:
if(success && loaded){ 
In deinem Beispiel mag das gehen, denn du lädst alles einfach in eine Variable lvDat ein, ich möchte aber die verschiedenen Datensätze in lvDat1, lvDat2 ... einladen. Und dann fangen die success-Probleme an.
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 17:37   #8 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Angry

Ich werde inzwischen den Verdacht nicht los, dass nicht erst kein success hinhaut, sondern das auch schon das load so wie beschrieben (s.u.) nicht klappt... aber was ist daran denn falsch?

Code:
function fDatenLaden(wieoft,daten){
	_root["lvData"+wieoft] = new LoadVars();
	_root["lvData"+wieoft].load(daten);
}

for (i=0;i<vDatensaetze;i++){
	fDatenLaden(i,_root.aDaten[i][1]);
}
Das load scheint gar nicht erst zu starten, wenn ich es so schreibe, denn anschließendes
Code:
_root["lvData"+i].onLoad = function(success) { ...
wird gar nicht erst ausgeführt...
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 17:48   #9 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
nur mal nebenbei: was soll das für einen sinn haben mit den ganzen LoadVars Objekten?????

mag ja sein, dass ich falsch verstehe was du willst, aber wenn du mit dem LoadVars objekt mehrere daten laden willst und feststellen möchtest ob die alle geladen sind um dann eine aktion auszuführen mach das doch so:

PHP-Code:
var datenArray:Array = new Array("hans.txt","seppel.txt","pater.txt");
var 
datenAnzahl:Number datenArray.length;


var 
myLoadVars:LoadVars = new LoadVars();
myLoadVars.onLoad = function(geladen) {
    if(
geladen ){
        
datenAnzahl--;
        if(
datenAnzahl <= 0)
            
gotoAndPlay(_currentframe+1);
    }
}



for (var 
i:Number 0i<datenArrayi++){
    
myLoadVars.load(datenArray[i]);

mojave ist offline   Mit Zitat antworten
Alt 10-03-2006, 18:00   #10 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Zitat:
Zitat von mojave
nur mal nebenbei: was soll das für einen sinn haben mit den ganzen LoadVars Objekten?????
Nicht nebenbei, sondern elementare Frage, klar. Ich möchte das so machen, weil in den Datensätzen identische Bezeichner stecken, und wenn ich die alle in EIN LoadVars haue, überschreibe ich mir die Daten, nicht wahr?
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 18:40   #11 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
weiß niemand Rat?
mache ich irgendeinen riesigen Denkfehler?
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 19:04   #12 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
richtig.
du musst mehrere LoadVars-objecte erzeugen..
einfach in einen array pushen..

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 10-03-2006, 19:08   #13 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Cool

Zitat:
Zitat von the binary
richtig.
du musst mehrere LoadVars-objecte erzeugen..
einfach in einen array pushen..

gruss
Wie oben beschrieben erzeug ich ja in einer Schleife mehrere LoadVars-Objekte, es klappt aber nicht, ich kann nicht auf die zugreifen, wie es aussieht. Ehrlich gesagt hilft mir "einfach in einen array pushen" als Ansatz aber auch nicht weiter.

Hülfe! :-)
kolumnen ist offline   Mit Zitat antworten
Alt 10-03-2006, 19:33   #14 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
hab dir mal schnell was gebastelt..

PHP-Code:
var vDatensaetze:Number 3;
var 
datenArray:Array = new Array("hans.txt","seppel.txt","pater.txt");

var 
pending:Number 0;
var 
arr:Array = [];

function 
fDatenLaden(wieoft,daten)
{
    
pending++;

    var 
lv:LoadVars = new LoadVars();
        
lv.id pending;
        
lv.onLoad onLoadHandler;
    
    
arr.push(lv);
    
    
lv.load(daten);
}

function 
onLoadHandlersux )
{
    
trace(sux)
    if (
sux)
    {
        if ( --
pending == 0
        {
            
trace('all data loaded');
            
// -- more code here
        
}
    }
    else
        
trace('fehler beim laden von #'this.id);
}

function 
init()
{
    for (
i=0;i<vDatensaetze;i++)
    {
        
fDatenLaden(idatenArray[i]);
    }
}

init(); 
sollte als ansatz reichen..

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 10-03-2006, 21:30   #15 (permalink)
User
 
Benutzerbild von kolumnen
 
Registriert seit: Jan 2002
Beiträge: 174
Aha!!!!
Das sieht beim Lesen schon mal SEHR gut aus, finde ich.

Ich werde es ausprobieren, und falls irgendetwas damit nicht klappen sollte, melde ich mich hier wieder :-)

TAUSEND DANK!!!

(Wirklich pfiffige Lösung finde ich... das ist so eine Art von AS-Konstrukt, auf die ich leider selber partout nicht komme... doof...)
kolumnen 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 04:13 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele