PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Actionscript Syntax-Problem


DanMan
2008-01-01, 22:07:20
Ok, es dreht sich um folgenden Code:
var format = new TextField.StyleSheet();
var path = "standard.css";
format.load(path);
format.onLoad = function(loaded) {
if (loaded) {
myLoadVar = new LoadVars();
myLoadVar.load("partner.txt");
myLoadVar.onLoad = function(success) {
if (success == true) {
kachel1.output.htmlText = myLoadVar.txt1;
kachel2.output.htmlText = myLoadVar.txt2;
kachel3.output.htmlText = myLoadVar.txt3;
kachel4.output.htmlText = myLoadVar.txt4;
kachel5.output.htmlText = myLoadVar.txt5;
}
};
} else {
kachel1.output.text = "Error loading CSS file!";
}
};
Wie man sieht lade ich externen Text aus der "partner.txt" Datei, wenn das Stylesheet fertig geladen ist. Den will ich dann den kachel1, kachel2, ... Objekten zuseisen - was so wie es dasteht auch funktioniert. Jetzt hab ich aber schon stundenlang rumprobiert, aber ich krieg den Teil mit

kachel1.output.htmlText = myLoadVar.txt1;
...

nicht in eine for-Anweisung gestopft, so dass es hinterher auch noch funktioniert. Einer 'ne Idee?

PatTheMav
2008-01-02, 04:06:46
Ok, es dreht sich um folgenden Code:
var format = new TextField.StyleSheet();
var path = "standard.css";
format.load(path);
format.onLoad = function(loaded) {
if (loaded) {
myLoadVar = new LoadVars();
myLoadVar.load("partner.txt");
myLoadVar.onLoad = function(success) {
if (success == true) {
kachel1.output.htmlText = myLoadVar.txt1;
kachel2.output.htmlText = myLoadVar.txt2;
kachel3.output.htmlText = myLoadVar.txt3;
kachel4.output.htmlText = myLoadVar.txt4;
kachel5.output.htmlText = myLoadVar.txt5;
}
};
} else {
kachel1.output.text = "Error loading CSS file!";
}
};Wie man sieht lade ich externen Text aus der "partner.txt" Datei, wenn das Stylesheet fertig geladen ist. Den will ich dann den kachel1, kachel2, ... Objekten zuseisen - was so wie es dasteht auch funktioniert. Jetzt hab ich aber schon stundenlang rumprobiert, aber ich krieg den Teil mit

kachel1.output.htmlText = myLoadVar.txt1;
...

nicht in eine for-Anweisung gestopft, so dass es hinterher auch noch funktioniert. Einer 'ne Idee?Könnte mich irren, aber innerhalb des function()-Zuweisungsblocks für das onLoad-Event existiert die Referenz myloadVar nicht, sondern ist "this".

DanMan
2008-01-02, 16:51:41
Könnte mich irren, aber innerhalb des function()-Zuweisungsblocks für das onLoad-Event existiert die Referenz myloadVar nicht, sondern ist "this".
Aber dann dürfte es ja so wie es dasteht nicht funktionieren, oder? Das tut es aber ja. Nur wenn ich jetzt eine for-Schleife auf diese Art schreibe:

var nr = 5;
var kacheln = new Array();
for (i=0;i<=nr;i++) {
kachel[i] = "kachel" +i; // kachel1, kachel2, ...
}
.
.
.
if (success == true) {
for (i=0;i<=nr;i++) {
kacheln[i].output.htmlText = myLoadVar.txt +i;
trace(kachel1.output.htmlText);
}
Dann läd er mir den externen Text nicht - beschwert sich aber auch nicht über irgendwelche Fehler. Der Trace gibt mir ein "undefined". Darum steh ich hier ziemlich im Regen. :(

astrocreep
2008-01-03, 11:28:45
dein problem ist der inhalt deines arrays. so kannst du movieclips nicht definieren. im array steht jetzt natürlich kachel1, kachel2, usw. allerdings sind das nur stinknormale strings. wenn du einen movieclip dynamisch zu zusammenbauen willst, muss immer ein movieclip, als referenz mit angegeben werden, also z.b. so:


var nr = 5;
var kacheln = new Array();
for (i=0;i<=nr;i++) {
kachel[i] = this["kachel" +i];
}


oder z.b.:


var nr = 5;
var kacheln = new Array();
for (i=0;i<=nr;i++) {
kachel[i] = _root["kachel" +i];
}


oder wo auch immer. wo die sachen liegen, musst du wissen ;) die anweisungen unten passen dann.

arbeite mal ein bisschen mit typisierung. das hilft enorm, beim finden von bugs.

also z.b. so:

var nr:Number = 5;
var kacheln:Array = new Array();
var tempclip:Movieclip;
for (var i:Number=0; i<=nr; i++) {
tempclip = this["kachel" +i];
kachel.push(tempclip);
}


so würdest du bei der zuweisung von "kachel"+i auf die variable tempclip auch sofort einen compiler fehler kriegen und wissen wo das problem ist!

gruß, astrocreep

DanMan
2008-01-03, 16:53:27
Hi astrocreep. Vielen Dank für die Hilfe schonmal, hat funktioniert (nur dass das Array kacheln heißt), auch wenn ich noch nicht wirklich geschnallt hab, was hinter this["kachel" +i] steckt.

Ich hab allerdings immernoch am Ende ein Problem mit dieser Zeile:
kacheln.output.htmlText = myLoadVar.txt +i;
So spuckt er mir in die Textfelder nämlich ein "NaN", anstatt dem, was in den Variablen steht. Wenn ich z.B.: kacheln[i].output.htmlText = [I]myLoadVar.txt1; schreibe funktioniert es, nur steht dann natürlich überall das gleiche. :frown:

Wie puhl ich Flash bei, dass das eine zusammengesetzte Variable ist?

astrocreep
2008-01-03, 23:49:52
genauso, wie bei movieclips ;) also:



kacheln[i].output.htmlText = myLoadVar["txt"+i];

gruß, astrocreep

DanMan
2008-01-04, 15:31:07
:massa: astrocreep



Alter Falter - wie soll man denn auf sowas kommen? Also ist das myLoadVar auch nix anderes, als ein Array, wa?

Vielen Dank,
und möge Gott dir Potenz bis zum Tode bescheren. :biggrin:

astrocreep
2008-01-05, 08:15:52
Alter Falter - wie soll man denn auf sowas kommen? Also ist das myLoadVar auch nix anderes, als ein Array, wa?

doch, das eine ist ein array, das andere ein objekt. das ist schon ein unterschied ;)

DanMan
2008-01-05, 18:02:13
doch, das eine ist ein array, das andere ein objekt. das ist schon ein unterschied ;)
Ja, hab mir gestern mal die Flash Hilfe dahingehend durchgelesen, und dann auch zumindest gemerkt, dass es kein Array ist. Aber eigentlich isses ja sogar 'ne Klasse, und die Variablen sind die Parameter oder Methoden der Klasse oder so ähnlich... :redface:

Diese Begrifflichkeiten machen alles nur noch schlimmer... :conf: