Array-Problem...

SonMiko

Erfahrenes Mitglied
Hallo zusammen ;-),

habe ein kleines Problem...
Ich habe ein Array im root initialisiert und definiert und habe ihm mehrere Werte zugeordnet (Strings -> Beispiel var dasArray:Array=["seite 1", "seite 2", "..."];).
Dann habe ich zwei weitere Variablen erstellt wo ich jeweils auch zwei Strings speichere.
Mein Ziel ist die korrekte ausgabe einer URL...
Das Problem ist jetzt nur das die Array Werte nicht angezeigt werden können,
wenn ich eine feste Zahl einsetze (Beispielsweise 2), dann wird auch das korrekte
Ergebnis ausgegeben (nämlich seite 2).
Irgendwie scheint das i nicht zu funktionieren...
was mache ich falsch

Hier ein Auszug aus dem Code (enthält nur relevantes Material)

Code:
for(var i:Number=0;i<bttext.length;i++){
buttons_mc.attachMovie("buttonbasis_btn", "buttonbasis"+i, i);
buttons_mc["buttonbasis"+i]._y=i*20;
buttons_mc["buttonbasis"+i].titel_txt.text=bttext[i];

//Button Press Release  RollOver und RollOut verhalten
buttons_mc["buttonbasis"+i].onRollOver=function(){
this._x=-1;
this.gotoAndPlay(2);
	}
buttons_mc["buttonbasis"+i].onRollOut=function(){
this._x=+1;
this.gotoAndPlay(21);
	}
buttons_mc["buttonbasis"+i].onPress=function(){
	trace(_root.bttargeta+_root.bttargetb[i]+_root.bttargetc);//HIER LIEGT DAS PROBLEM ALSO DIESES ARRAY GENANNT bttargetb... DER ZUGRIFF KLAPPT, ABER NICHT MIT DEM "i". Muss ich etwas beachten? Vielleicht das "i" außerhalb der Vorschleife festlegen
	this._x=-5;
}

Vielen Dank,

Besten Gruß,

Euer

Mike
 
Zuletzt bearbeitet:
Hallo,

das Problem liegt daran, dass die onPress-Funktion kein Zugriff auf eine Iterator-Variable hat, die 1. nicht auf derselben Instanz liegt, 2. zum Zeitpunkt der onPress-Ausführung wahrscheinlich schon längst verworfen wurde. Abhilfe bringt da bloss die Mitgabe des i-Werts:

Code:
buttons_mc["buttonbasis"+i].i = i;
buttons_mc["buttonbasis"+i].onPress=function(){
	trace(_root.bttargeta+_root.bttargetb[this.i]+_root.bttargetc);
	this._x=-5;
}

gruss

PS: Ein kleiner Tipp: Speicher den Instanznamen des aktuellen MovieClips in einer Variable, der Code wird massiv viel übersichtlicher und weniger fehleranfällig:

Code:
for (var i:Number = 0; i < bttext.length; i++) {
var mc: MovieClip = buttons_mc.attachMovie("buttonbasis_btn", "buttonbasis"+i, i);
mc._y = i*20;
mc.titel_txt.text = bttext[i];

//Button Press Release  RollOver und RollOut verhalten
mc.onRollOver = function(){
     this._x = -1;
     this.gotoAndPlay(2);
}

//usw
 
Wow

Klasse klappt Tausend Dank

Könnte ich nun hingehen und sagen

Code:
buttons_mc["buttonbasis"+i].i = i;
buttons_mc["buttonbasis"+i].onPress=function(){
	getURL(_root.bttargeta+_root.bttargetb[this.i]+_root.bttargetc);
	this._x=-5;
}
Würde das gehen? Oder müsste ich einen String daraus machen?

Achja, wie genau sieht das mit den Tiefen denn aus, also ich verstehe nicht ganz weshalb auf i nicht zugegriffen werden kann, zudem was ist eine "Iterator-Variable"?

Besten Gruß und vielen lieben Dank,

Mike
 
Hallo,

das funktioniert schon, wenn denn die entsprechenden Variablen Strings sind und eine sinnvolle URL ergeben...

Zu deiner Frage:
Wikipedia hat gesagt.:
Der Begriff Iterator (manchmal auch Cursor) stammt aus dem Bereich der Softwareentwicklung und bezeichnet einen Zeiger, mit dem über die Elemente einer Liste bzw. durch die Elemente einer Menge iteriert werden kann.

Code:
 for (i = 0; i < n; i++)

Es werden n Fälle durchgespielt, wobei i für den aktuellen Fall steht. i ist bei dem Beispiel der Iterator. Nicht grade Matheskript-würdig, aber ich habs probiert :-).

gruss
 
hmpf...

Okay ich bedanke mich

Alles klappt nun...

Die Variable "i" wurde also nicht angenommen, da Sie zur Laufzeit längst wieder wertlos war...
Echt merkwürdig...
Hätte gedacht das im schlimmsten fall i==Array.length ist, da dies das ende der For Schleife wäre...
Aber naja...

Trotzdem Danke für alles...

Besten Gruß,

Mike
 
Zurück