dynamieczne tworzenie pola tekstowego

Technologia Flash, czyli animacja na potrzeby stron WWW to świat daleko odbiegły od zwykłego programowania i kodu. Zapytaj o pomoc i podziel się z nami Twoimi problemami z zakresu Flasha.
conip
Posty: 14
Rejestracja: pt sie 10, 2007 10:49 am

dynamieczne tworzenie pola tekstowego

Post autor: conip »

Witam wszystkich po raz 1szy :)

pisze z takim małym problemem:

w petli chce tworzyc dynamicznie pola tekstowe np majac taki kod

Kod: Zaznacz cały

	
for(i=0; i<2; i++)
{	
	nazwa = "nazwa"+i;
	//trace(nazwa);
	depth = _root.getNextHighestDepth();
	//trace(depth);
	_root.createTextField(nazwa,depth ,50,i*100 + 250,100,80);
	nazwa.text = "proba" + i;	
}
i pojawia mi sie problem:
jak odniesc sie do obiektu o nazwie która dynamicznie tworze? Flash zdaje sie probuje nadac atrybut text obiektowi nazwa, a ja chce aby to byla np nazwa1.

dzięki z gory za pomoc
pozdrawiam

Czy da się to w ogole zrobic?
conip
Posty: 14
Rejestracja: pt sie 10, 2007 10:49 am

Re: dynamieczne tworzenie pola tekstowego

Post autor: conip »

ponieważ równolegle zamieścilem ten post na innym forum i tam szybciej uzyskałem odpowiedz wiec dziele się tą świeżo zdobytą wiedzą:

wystarczyło dodać

_root[nazwa].text = "costam";

pozdrawiam
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: dynamieczne tworzenie pola tekstowego

Post autor: Marek_bf »

Nie używaj _root

Kod: Zaznacz cały

var this_mc:MovieClip = this;
var my_txt:TextField;
var newName:String;
var newDepth:Number;
for (i = 0; i < 2; i++) {
	newDepth = this_mc.getNextHighestDepth();
	newName = "nazwa" + newDepth;
	my_txt = this_mc.createTextField(newName, newDepth, 50, i * 20, 100, 20);
	my_txt.text = "proba" + i;
}
conip
Posty: 14
Rejestracja: pt sie 10, 2007 10:49 am

Re: dynamieczne tworzenie pola tekstowego

Post autor: conip »

Dzięki za odpowiedz

a moglbys uzasadnic dlaczego nie powinno sie uzywac _root?

dopiero zaczynam wiec dla mnie liczy sie efekt koncowy zeby dzialalo :) - ale dzieki za wszelkie wskazowki. Poki co niestety to co podales jeszcze nie dziala bo wywala blad

Kod: Zaznacz cały

**Error** Scene=Scene 1, layer=action, frame=1:Line 8: Type mismatch in assignment statement: found Void where TextField is required.
        my_txt = this_mc.createTextField(newName, newDepth, 50, i * 20, 100, 20); 
ale pokombinuje i jakos dojde

pozdrawiam
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: dynamieczne tworzenie pola tekstowego

Post autor: Marek_bf »

Root nie należy używać choćby ze względu na konflikty, jakie jego użycie będzie powodowało, gdy wczytasz plik z takim kodem do innego swf.

Teraz nie powinno wywalać błędów zgodności typów.

Kod: Zaznacz cały

var this_mc:MovieClip = this; 
var my_txt:TextField; 
var newName:String; 
var newDepth:Number; 
for (i = 0; i < 2; i++) { 
   newDepth = this_mc.getNextHighestDepth(); 
   newName = "nazwa" + String(newDepth); 
   my_txt = this_mc.createTextField(newName, newDepth, 50, i * 20, 100, 20); 
   my_txt.text = "proba" + String(i); 
}
conip
Posty: 14
Rejestracja: pt sie 10, 2007 10:49 am

Re: dynamieczne tworzenie pola tekstowego

Post autor: conip »

wlasnie tak mam zamiar zrobic - glowny swf zaimportuje inny obslugujacy XMLa dlatego kombinuje z dynamiczna liczba pol textowych zaleznie od zawartosci tego XMLa.

Tak wiec zaoszczedziles mi pewnie znowu nerwow :) dzieki jeszcze raz

co do poprawnosci ostatenigo kodu niestety nadal wywala ten sam blad

Kod: Zaznacz cały

**Error** Scene=Scene 1, layer=action, frame=1:Line 8: Type mismatch in assignment statement: found Void where TextField is required.
        my_txt = this_mc.createTextField(newName, newDepth, 50, i * 20, 100, 20); 
pozdrawiam
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

xml

Post autor: Marek_bf »

conip
Posty: 14
Rejestracja: pt sie 10, 2007 10:49 am

Re: dynamieczne tworzenie pola tekstowego

Post autor: conip »

jeszcze raz dzieki za pomoc

teraz juz smiga wszystko super - nie wiem czemu wczesniej nie dzialalo dla pewnosci wyeksportowalem jako swf pod flashplayera 8 i as2 i od tej pory jest ok.

pozdrawiam
ODPOWIEDZ