Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-10-2004, 12:26   #1 (permalink)
life is a flash
 
Registriert seit: Oct 2002
Ort: Wien
Beiträge: 172
Array zurückgeben

_root.array1 = new Array();

_root.array1 = ArrayZuweisen();
trace("Array1: "+_root.array1);

function ArrayZuweisen(){
array2 = new Array();
...
trace("Array2: "+array2);
return array2;
}


--------
Gibt aus:
Array1: undefined
Array2: Arrayinhalt

Ich schaffs nicht das 2. Array dem ersten zuzuweisen.
Mich wunderts, warum ich als erstes "undefined" von Array1 und dann Array2 ausgegeben bekomme - da stimmt die Reihenfolge im Ablauf nicht, oder?
Raffraff ist offline   Mit Zitat antworten
Alt 09-10-2004, 13:47   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
konfizius sagt:
wo nichts drinn ist kann auch nichts rauskommen
ActionScript:
  1. _root.array1 = new Array();
  2. _root.array1 = ArrayZuweisen();
  3. trace("Array1: "+_root.array1.join(" "));
  4. function ArrayZuweisen() {
  5.     array2 = new Array("das","ist","ein","test");
  6.     trace("Array2: "+array2.join(" "));
  7.     return array2;
  8. }
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 09-10-2004, 18:35   #3 (permalink)
life is a flash
 
Registriert seit: Oct 2002
Ort: Wien
Beiträge: 172
danke, hat klarerweise funktioniert.

bin gerade drauf gekommen, wo mein problem lag: hatte in der funktion ein onLoad. deswegen hat flash auch den ersten array ein undefined zugewiesen, weil die daten noch nicht geladen waren, und hat erst über das zweite array dem ersten die daten zugewiesen (deswegen die reihenfolge, die nicht stimmte). die daten waren im ersten!

wie sag ich ihm jetzt, dass er erst weitertun soll, wenn die Daten geladen sind? mit setIntervall ständig die funktion aufrufen?
Raffraff ist offline   Mit Zitat antworten
Alt 09-10-2004, 20:54   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
hmmmm, als Theoretiker solltest du aber handbücher lesen können.
nicht verstehen ist, wenn etwas nicht klappt (da helfen wir gerne)
nicht wissen ist, wenn man sich nicht informier hat.

onLoad was ???????

benützt du LoadVars? was du hier leider nicht beschreibst.
dazu gibt es
ein send()
ein sendAndLoad()
ein onLoad
ein onData
...

also da ist von allem jede menge vorhanden.

und benütz doch bitte mal die suchfunktion hier im forum
zum thema LoadVars u.a. findest du jede menge beiträge ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 23-06-2006, 17:00   #5 (permalink)
_M++
 
Benutzerbild von monroe
 
Registriert seit: Mar 2004
Ort: Stuttgart
Beiträge: 403
huhu ich hab das selbe Problem und habe deswegen meinem Post an dieses gehängt.

Ich versuche das gleiche wie Raffraff

Code:
function dbData (sSql:String)
{
	sArrData = new Array();
	
	lvData = new LoadVars();
	lvData.VarAnPhp = sSql;
	lvData.sendAndLoad('php.php', lvData);
	lvData.onLoad = function (sucess)
	{
	   if (sucess)
	   { 
		  sArrData = this.phpinfo.split("|");
		  return sArrData;	
	   }
	}  	
}
wenn ich jetzt die funktion aufruf mit

Code:
arrData = new Array();
arrData = dbData("irgendwas");
textfeld.text = arrData[0];
dann wird undefined ausgegeben. Weil ja das Array mit Werten gefüllt wird, die noch gar nicht geladen sind. Wie umgehe ich das Problem?

vielen dank

moni
monroe ist offline   Mit Zitat antworten
Alt 23-06-2006, 17:30   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!
Nee, das Array wird nicht mit Werten gefüllt, die noch nicht vorhanden sind, sondern das Script wartet nicht, bis die Daten geladen wurden.

Das Thema gab's nun aber wirklich schon oft genug...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 23-06-2006, 18:11   #7 (permalink)
_M++
 
Benutzerbild von monroe
 
Registriert seit: Mar 2004
Ort: Stuttgart
Beiträge: 403
Zitat:
Zitat von Der Frager
Hallo!
Das Thema gab's nun aber wirklich schon oft genug...
ich habe mich wirklich schon bemüht, an was liegt es denn? mein onLoad fragt doch ab ob die daten da sind?

sollte ich onData anstatt onLoad verwenden?

gruss
monroe ist offline   Mit Zitat antworten
Alt 23-06-2006, 18:17   #8 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Nein... du musst alles, was von der An- oder Abwesenheit der LV-Daten abhängig is, in den onLoad packen...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 23-06-2006, 18:19   #9 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
und die Reihenfolge ändern

PHP-Code:
function dbData (sSql:String)
{
    
sArrData = new Array();
    
    
lvData = new LoadVars();
    
lvData.VarAnPhp sSql;
    
    
lvData.onLoad = function (sucess)
    {
       if (
sucess)
       { 
          
sArrData this.phpinfo.split("|");
          return 
sArrData;    
       }
lvData.sendAndLoad('php.php'lvData);
    }      

bobo_k1 ist offline   Mit Zitat antworten
Alt 23-06-2006, 19:08   #10 (permalink)
_M++
 
Benutzerbild von monroe
 
Registriert seit: Mar 2004
Ort: Stuttgart
Beiträge: 403
Zitat:
Zitat von bobo_k1
und die Reihenfolge ändern
dann tut sich gar nichts mehr.

Also ich hab mir mal die Beiträge PHP => Flash undefined und Nachladen von Variablen aus Texten oder PHP-Files zur Brust genommen.

Es funktioniert auch alles, solange ich den Mist nicht in die Funktion dbData stecke. Gebe ich die Daten in ein Textfeld aus funktioniert es auch. Ich habe auch mit einem onEnterFrame versucht den return zu verzögern, dies tut auch nicht.

dbData() wird aufgerufen und sofort das noch nicht vorhandende Array returned. Dann bekomm ich ein undefine und flash ist wurst ob nun noch daten kommen oder nicht. Wie soll ich denn verhindern dass, das return erst ausgeführt wird wenn die daten da sind

gruss
monroe ist offline   Mit Zitat antworten
Alt 23-06-2006, 20:11   #11 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
keine hecktik, keine panik, kein rätzelraten, nur nackte logig und die flash hilfe benutzen:
Code:
function dbData(sSql) {
	// 2. serverabfrage starten
	lvData = new LoadVars();
	lvData.VarAnPhp = sSql;
	lvData.sendAndLoad('php.php', lvData);
	lvData.onLoad = function(sucess) {
		if (sucess) {
			// 3.1. irgendwann kommt die antwort
			// split macht ein array draus, das muss man nicht extra sagen
			// vorrausgesetzt es gibt ein phpinfo in der antwort
			sArrData = this.phpinfo.split("|");
			// da gibt es kein return, wohin denn auch, zum server???
			// return sArrData;
			// 4. aber von hier aus die nächste aktion starten,
			// wenn noch etwas mit den daten passieren soll
			fNextAction();
		} else {
			// 3.2. sollte man nie ausser acht lassen
			trace("fac: "+this);
		}
	};
}
// 1. functionsaufruf
dbData("irgendwas");
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 24-06-2006, 11:51   #12 (permalink)
_M++
 
Benutzerbild von monroe
 
Registriert seit: Mar 2004
Ort: Stuttgart
Beiträge: 403
dankeschön euch allen tapferen Helfern

@hgseib mit dem return hatte ich vor die daten die aus der db kommen an meine variable zurück zu geben.

Ich erzähl mal wie ich es vor hatte, ich hab allerdings das Gefühl das es so nicht geht wie ich vor hatte.

1) in level0 wird die funktion dbData erstellt.

2) in level12 wird ein array erzeugt.
dann ruf ich meine funktion array = level0.dbData(); auf

3) mit dem return hatte ich vor das zeugs aus der funktion in dieses array auf level 12 zurück zugeben.

4) danach wollte ich mit dem array in level 12 weiter arbeiten.

mein problem ist, wenn ich eine funktion aus der level0.dbData funktion aufruf dann weiß diese funktion ja garnicht wo diese sich befindet. z.b. auf level12 ist eine funktion showTxt() definiert. Diese ist in der dbData ja nicht bekannt...

ist meine überlegung so richti? bzw kann man das so umsetzten?

grüsse moni

Geändert von monroe (24-06-2006 um 11:52 Uhr)
monroe ist offline   Mit Zitat antworten
Alt 24-06-2006, 17:54   #13 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
"..2) in level12 wird ein array erzeugt.
dann ruf ich meine funktion array = level0.dbData(); auf.."

das geht nicht!!! wurde doch jetzt mehrmals gesagt und begründet.

hab ich jetzt nicht getestet, aber so sollte es gehen:
Code:
function dbData(sSql, fBackFunction) {
	lvData = new LoadVars();
	lvData.VarAnPhp = sSql;
	lvData.sendAndLoad('php.php', lvData);
	lvData.onLoad = function(sucess) {
		if (sucess) {
			fBackFunction(this.phpinfo.split("|"));
		} else {
			trace("fac: "+this);
		}
	};
}
//
function fBackFunction(_array) {
	trace(_array);
}
dbData("irgendwas", fBackFunction);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (24-06-2006 um 18:00 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 26-06-2006, 20:21   #14 (permalink)
_M++
 
Benutzerbild von monroe
 
Registriert seit: Mar 2004
Ort: Stuttgart
Beiträge: 403
danke hgseib für deine Hilfe, Lösungen und Erklärungen...

ich habe einen grundsätzluchen Denkfehler gehabt!

gruss
monroe 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 12:47 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele