Hallo,
ich habe eine etwas größere Schleife, in der nach und nach ein XML ausgelesen wird und die Inhalte in Textfelder geschrieben werden. Es klappt auch alles wunderbar soweit.
Jetzt habe ich das Problem, dass über den Texten auch Buttons erzeugt werden. Bei jedem Button der erzeugt wird muss bei onRelease die Variable an mein _root-Verzeichnis übergeben werden, die zum Zeitpunkt als der Button in der Schleife erzeugt wird aktuell ist.
Gar nicht so einfach zu erklären ich poste jetzt erstmal mein AS, denke dann wirds klarer :-) Habe ein Kommentar an der Stelle geschrieben wo das Problem auftritt.
PHP-Code:
function createMenu2(genre) {
var i:Number = 0;
trace(i);
var yPos:Number = 0;
for (var aNode:XMLNode = aNo.firstChild; aNode != null; aNode = aNode.nextSibling) {
i++;
for (attr in aNode.attributes) {
if (genre == aNode.attributes[attr]) {
// Textfeld #2
this.createTextField("txt_" + i, this.getNextHighestDepth(), 6, yPos, 630, 30);
var tf1:TextField = eval("txt_" + i);
tf1.text = aNode.attributes[attr];
tf1.autoSize = true;
tf1.embedFonts = true;
tf1.selectable = false;
tf1.setTextFormat(_root.fmt25);
// Trennungsline
this.lineStyle(2, 0x999999, 100);
this.moveTo(0, tf1._height);
this.lineTo(634, tf1._height);
// Textfeld #2
yPos = yPos + tf1._height + 2;
var pNode:Array = aNode.childNodes;
for (var j:Number = 0; j < pNode.length; j++) {
i++;
this.createTextField("txt_" + i, this.getNextHighestDepth(), 6, yPos, 630, 60);
var tf2:TextField = eval("txt_" + i);
tf2.text = pNode[j].attributes.name;
tf2.autoSize = true;
tf2.embedFonts = true;
tf2.selectable = false;
tf2.setTextFormat(_root.fmt20);
// Trennungsline
this.lineStyle(2, 0x999999, 100);
this.moveTo(0, tf2._height + yPos);
this.lineTo(634, tf2._height + yPos);
yPos = yPos + tf2._height + 2;
var tNode:Array = pNode[j].childNodes;
for (var l:Number = 0; l < tNode.length; l++) {
i++;
// Textfeld #3
this.createTextField("txt_" + i, this.getNextHighestDepth(), 6, yPos, 316, 41);
var tf3:TextField = eval("txt_" + i);
tf3.text = tNode[l].attributes.name;
//tf3.autoSize = true;
tf3.multiline = true;
tf3.wordWrap = true;
tf3.embedFonts = true;
tf3.selectable = false;
//tf3.background = true;
//tf3.backgroundColor = 0xFF0000;
tf3.setTextFormat(_root.fmt15);
i++;
// Textfeld #4
this.createTextField("txt_" + i, this.getNextHighestDepth(), 326, yPos, 296, 41);
var tf4:TextField = eval("txt_" + i);
tf4.text = tNode[l].attributes.who;
//tf4.autoSize = true;
tf4.multiline = true;
tf4.wordWrap = true;
tf4.embedFonts = true;
tf4.selectable = false;
//tf4.background = true;
//tf4.backgroundColor = 0xFF0000;
tf4.setTextFormat(_root.fmt15);
// Schaltfläche
//trace(tNode[l].attributes.src);
var naviMain = aNode.attributes[attr];
var naviSource = tNode[l].attributes.src;
var btn:MovieClip = this.createEmptyMovieClip("btn" + i, this.getNextHighestDepth());
btn.onRelease = function() {
trace(naviMain);
trace(naviSource);//hier ist mein Problem: ich bräuchte den Wert von tNode[l].attributes.src; er schreibt mir aber immer den letzten Wert der gesamten Schleife rein
//_root.gotoAndStop(naviMain);
}
btn._alpha = 0;
btn.beginFill(0xFF0000);
btn.moveTo(6,yPos);
btn.lineTo(620,yPos);
btn.lineTo(620,yPos + tf4._height);
btn.lineTo(6,yPos + tf4._height);
btn.lineTo(6,yPos);
btn.endFill();
// Trennungsline
this.lineStyle(2, 0x999999, 100);
this.moveTo(0, tf4._height + yPos);
this.lineTo(634, tf4._height + yPos);
yPos = yPos + tf4._height + 2;
}
}
}
}
}
}
createMenu2("Video");
Meine Frage ist also, wie kriege ich es hin, das in der onRelease-Funktion jeweils ein ein eigener Wert steht.
Falls ich mein Problem nicht genau genug geschildert habe bitte nachfragen. Ansonsten bin ich über jede Hilfe dankbar.
Viele Grüße
Manni