Wieder Problem - dyn. Textfelder?!

heino-th

Erfahrenes Mitglied
Nabend, sorry, das ich heute bzw. zurzeit so oft fragen poste,
aber irgendwie stoß ich zurzeit immer auf neue Probleme die ich leider komischerweise mithilfe der internen Hilfe von Flash nich lösen kann! :D

Also, ich wollte mal eben kurz dynamisch Texfelder erzeugen lassen, die dann untereinander zu einer art Tabelle gemacht werden sollen ^^
Ich hab also ne Function mit createTextFiel("Name",z,x,y,b,h);
Aber dann hab ich des Problem das ich in einer while-schleife
überprüfen will ob die Zahl, also z.b. 5 aus einem InputFeld, erreicht is, also sollten dann z.b. 5 Textfelder untereinander dasteh.
Deshalb wollte ich die mit .border = true den rahmen darstellen lassen!
Dann hab ich aber gemerkt das der mir gar keine Textfelder gemacht hat :/

Also ich kann ja nich schreiben Name+x.border = true, da kommt dann ne Fehlermeldung :(

Aber wie kann ich das sonst an Stellen?

Also nochmal kurz, falls das oben etwas unverständlich war ^^
Ich möchte Textfelder dynamisch anlegen und mit dynamischen Namen versehen und dann auch dyn. mit Inhalt füllen usw. und eine dyn Anzahl :D

Hoffe das das jmd weiß :D

mfg heino
 
Hi,

1. es heisst createTextField (mit "d")

2. Die Methode createTextField gibt ab Flashplayer 8 eine Referenz auf das neue Textfeld zurück. Die könntest Du verwenden, um die neuen Textfelder direkt in einem Array abzulegen

3.Wenn Du 5 Textfelder erstellen willst, musst Du auch den dritten Parameter (Tiefe) bei jeder neuen Instanz erhöhen. Sonst bekommst Du 1 Textfeld, das fünf mal überschrieben wird.

3. Du kannst dynamisch erstellte Objekte über ihren Instanznamen ansprechen, indem Du den Array-Zugriffsoperator verwendest. Beispiel: Mit this["feld" + 5] bekommst Du eine Referenz auf das Objekt mit dem Namen "feld5"

4. Wenn bei Dir überhaupt kein Textfeld erstellt wird, hast Du eine fehlerhafte Syntax. Poste in dem Fall bitte Deinen kompletten Code oder gleich die Datei.

Gruß
.
 
Hm, jetz funktionierts doch nich so wies sein sollte *g*

Also hier mal mein Code:
PHP:
ok_btn.onPress = function() {
	
	for(x=0;x<Felder_txt.text;x++) {
		Feld = ["Feld_"+x];

	        createTextField(Feld,1+x,100+x,50,100,20);

	        Feld.border = true;
	        Feld.text = "Test"+x;
	}
}

Will nich funktionieren ^^
Also ich seh überhaupt kein Textfeld, keins.

Danke

mfg heino
 
Hi,

1. Der Inhalt von "Felder_txt.text" ist keine Zahl, sondern ein String. Du musst den Wert erst mit parseInt in einen Numerischen umwandeln.

2. Du kannst nicht auf ein Objekt zugreifen, bevor es existiert. Also:
Code:
ok_btn.onPress = function() {
    for(x=0; x<parseInt(Felder_txt.text, 10); x++) {
            var Feld = "Feld_" + x;
            createTextField(Feld, 1 + x, 100 + x, 50, 100, 20);
            this[Feld].border = true;
            this[Feld].text = "Test"+ x;
    }
}
Ausserdem musst Du vor dem Array-Zugriffsoperator das Objekt stehen haben, in dem sich Dein Zielobjekt befindet (in diesem Fall: "this").

Gruß
.
 
Nabend,

hm, also irgendwie will das immer noch nicht klappen!

Wenn ich das so mache wie du mir das in deinem letzten Beitrag beschrieben hast,
dann geht nichts?! ^^

Kannst du mir das vll nochmla erklären? Danke ;D

mfg heino
 
Hi,

sorry, nimm statt "this" mal "this._parent" bzw. "_root" (wenn die Textfelder auf der Hauptzeitleiste erstellt werden sollen). In dem onPress-Handler des Buttons bezieht sich "this" nämlich auf den Button. ;)

Prüf auch bitte mal, ob die Schleife korrekt durchlaufen wird. Ich habe zwar mal angenommen, dass es sich bei "Felder_txt.text" um die .text-Eigenschaft eines Textfeldes handelt, aber ohne Deine Datei zu sehen, kann ich mir nicht sicher sein (es gab schon genug Leute, die .text auch als Variablenbezeichner verwendet haben ...). Prüf auch mal, ob parseInt(Felder_txt.text, 10) wirklich eine Zahl und nicht vielleicht "NaN" zurückgibt.

Gruß
.
 
Juhuu, vielen vielen Dank ;)

Jetzt funktionoierts einwandfrei, musses halt auch noch n bisschen anpassen ^^

Hehe, ne .text is für mich die Eigenschaft fürs textfeld ^^

Gibt auch alles Korrekt wieder

Danke Danke Danke ;)

mfg heino
 
Hehe, so, das hat nu geklappt, nun ist das nöchste Problem da! :D

Also, das ganze möchte ich dann ja für einen kleinen Chat verwenden:
Das sollte erstmal die UserOnline Anzeige werden.
Hier mein bisheriger Code:
Code:
var OnlineUser = new LoadVars()
OnlineUser.onLoad = function(Laden) {
	_root.USAnzahl.text = OnlineUser.UserAnzahl;
	_root.test.text = OnlineUser.UserOnline_Namen;
	if(Laden) {
		ok_btn.onPress = function() {
		UserNamen = OnlineUser.UserOnline_Namen.split("|");
		UserAnzahl = OnlineUser.UserAnzahl
		for(x=0; x<parseInt(USAnzahl.text, 10); x++) {
			var UserNamenMC = "UserNamenMC_" + x;
			var UserNamenTXT = "UserNamenTXT_" + x;
			createEmptyMovieClip(UserNamenMC, 1+x);
			this._parent[UserNameMC].createTextField(UserNamenTXT, 1+x, 550.5, 88.6+x*20, 150, 20);
			this._parent[UserNameMC]._parent[UserNamenTXT].text = UserNamen[x];
			this._parent[UserNameMC]._parent[UserNamenTXT].border = true;
			}
		}
	}
}
OnlineUser.load("UserOnline.php");
Ja, also in der PHP-Datei hab ich bisjetzt nur das:
Code:
$UserOnline_Namen = "ADMIN|Tester1|Tester2|Tester3|Tester4|usw|UndImmerWeiterSo";      
echo "&UserAnzahl=". "7"."&";
echo "UserOnline_Namen=".$UserOnline_Namen."&";
(Eigentlich wollt ich das mit den Usernamen in einem Array übergeben, aber wie ich dann durch suchen hier erfahren habe geht das nur beding, naja, muss ich noch weiterprobieren ;D)
Ja, jedenfalls funktioniert der Code ohne das ROT Markierte-Zeugs einwandfrei, er erstellt mir an einer bestimmten Stelle für jeden User untereinander ein Txt-Feld mit dem Namen drinnen, aber nicht in einem eigens creirten MC, so wie das mit dem roten zeugs sollte.
(Oh *g* grad is mir wieder n Problem eingefallen - wie kann ich das ganze dann mit einem Scrollbalken scrollfähig machen?
Also wenn es ne Menge User werden müsste man ja dann irgendwie scrollen können?
Geht das mit meiner bisherigen Idee von den einzelnen Txt_Feldern überhaupt?
Das mit den einzelnen Textfeldern in den einzelnen MCs wollte ich so machen, damit ich für jedes ein bestimmten Effekt erstellen kann :D

Ja, wieder zurück zum eigentlichen Thema, wie kann ich es machen, dass das Textfeld in dem dyn erstellten MC liegt?!
Ich dachte das geht so mit dem roten Code oben drinnen, aber da erstellt er mir dann gar nix mehr!
Also irgendwas is da denke ich noch falsch *g*

Hoffe hier bekomme ich mal wieder Hilfe!

Jedenfalls Vielen Vielen Dank für die bisherige Geduld, besonders an Datic ;)

mfg heino
 
Hi,

wenn das ganze in "OnlineUser.onLoad" steht, bezieht sich "this._parent" in "ok_btn.onPress" auf "OnlineUser" ... was nicht der Ort sein wird, in dem Du Deine Textfelder generieren möchtest. ^^

Frage: Hast Du Dir schonmal die Dokumentation zu "this", "_parent" und "_root" durchgelesen? Du musst immer schauen, dass Du mit Deinen Pfaden da landest, wo Du landen willst.

Wenn sich das alles auf der Hauptzeitleiste abspielt, kommst Du schon mit einem "_root" weiter - andernfalls haben sich auch globale bzw. Objektvariablen, die auf Deine Zielobjekte zeigen, bewährt.

Gruß
.
 

Neue Beiträge

Zurück