Dyn. Textfelder mit ActionScript

Vaio82

Erfahrenes Mitglied
Hallo zusammen,

ich möchte dynamische Textfelder generieren, nur habe ich kleine syntaktische Probleme. Die Laufvariabel (i) läßt sich ganz schlecht an den Namen des Textfeldes heften.


Wäre jmd. so freundlich und könnte mir da einen Hinweis geben?

Code:
var x = 200;

for (var i = 1; i<10; i++){
	
	var caption = ["Kundensuche" + i + "_txt"];
		
	_root.createTextField(caption,10,10,x,300,100);
	
	_root[Kundensuche" + i + "_txt].multiline = true;
	_root[Kundensuche" + i + "_txt].wordWrap = true;
	_root[Kundensuche" + i + "_txt].border = false;
	_root[Kundensuche" + i + "_txt].text = "Kundensuche:";
	
	_root[Kundensuche" + i + "_txt].setTextFormat(Kundensuche_format);

	     

x = x + 100;
}

Schöne Grüße,
Claus
 
Hi,

ja ja das Textformat Gedöns ist in Flash reichlich schlecht dokumentiert.....

1.) multiline, wordwrap und sonstige Textfeldeigenschaften weist du dem Textformat zu, nicht dem Textfeld - diesem wird nur das Textformat zugewiesen, und zwar nachdem du es mit text gefüllt hast oder indem du NewTextFormat definierst.

2. deine Syntax ist wurstig:

_root[Kundensuche" + i + "_txt].text = "Kundensuche:"; // ist falsch

_root["Kundensuche" + i + "_txt"].text = "Kundensuche:"; // ist richtiger

var Zieltext = eval ("_root.Kundensuche"+ i + "_txt");
Zieltext.text = "Kundensuche:"; // ist am richtigsten

Grüsse
B
 
Hallo Basileus,

ich habe es nun so gemacht:

Beim trace sagt er mir jedoch, dass alle Inhalte, die etwas mit der $ Beschreibung zu tun haben, "undefined" wären...

Code:
var x = 200;

for (var i = 1; i<10; i++){
	
	var Name = "TextField";
	
	var Beschreibung = eval("Name" + i + "_txt");
	
	_root.createTextField(Beschreibung,10,10,x,300,100);
	
	Beschreibung.text = eval("Kundensuche: " + i); // ist am richtigsten

	trace(Beschreibung);
	trace(i);
	trace(Beschreibung.text);
	
	Beschreibung.setTextFormat(Kundensuche_format);
    

x = x + 100;
}

Schöne Grüße,
Claus
 
Hi,

Du hast immernoch mehrere Fehler in dem Code:
PHP:
for (var i = 1; i<10; i++){
	
	var Name = "TextField";
	
	var Beschreibung = ("Name" + i + "_txt"); // kein eval, da nur String
	_root.createTextField(Beschreibung,i,10,x,300,100); // i gibt die Tiefe an
                     // bei gleicher Tiefe wird das Feld immer wieder überschrieben!
	Beschreibung=eval(Beschreibung); // Hier String in Objektreferenz umwandeln
	Beschreibung.text = ("Kundensuche: " + i); // ist wieder String, daher kein eval

	trace(Beschreibung);
	//trace(i);
	//trace(Beschreibung.text);
	
	Beschreibung.setTextFormat(Kundensuche_format);
    

x = x + 100;
}

Gruß

P.S.: vielleicht solltest Du für die Objektreferenz einen anderen Variablennamen verwenden (ein Array bietet sich an: mein_textfeld[i]).
 
Klasse!

Wärst du bitte noch so freundlich und würdest mir das etwas genauer erklären?

Code:
Beschreibung=eval(Beschreibung); // Hier String in Objektreferenz umwandeln
 
:-) das ist genau die Zeile, wo ich z.B. textfeld[ i ] statt "Beschreibung" nehmen würde.

Ok: Im Moment enthält "Beschreibung" noch einen String, nämlich "Name" + i + "_txt" - also z.B. "TextFeld12_txt". Damit kannst Du ohne weiteres kein Objekt ansprechen. eval(Beschreibung) gibt nun eine Referenz auf das Objekt mit dem Instanznaman "TextFeld12_txt" zurück - von da aus hast Du eine Objektvariable, mit der Du auf das Textfeld zugreifen kannst.

Gruß
 
Zurück