Pentru a modifica labelul unui buton de tip Button (apartinand clasei SimpleButton) creat de catre noi, presupunand ca acest buton se numeste
myLabel, procedam astfel:
// avem nevoie de clasa Sprite din pachetul display si de clasa TextField din pachetul text
import flash.display.Sprite;
import flash.text.TextField;
// declaram starile pe care dorim sa le modificam, proprietati read/write ale calsei SimpleButton
var aStates:Array = ["upState", "overState", "downState"];
var str:String = "My New Text Label";
// parcurgem starile
for each(var _state:String in aStates){
var ref:* = myButton[_state];
// daca starea curenta are un singur copil atunci va avea tipul acelui copil...
if(ref is TextField) {
ref.text = str;
// ... altfel va fi de tip Sprite
} else if(ref is Sprite) {
// parcurgem toti copiii, iar cand gasim copilul de tip TextField il modificam
for(var i:int=0; i < ref.numChildren; i++) {
if(ref.getChildAt(i) is TextField) {
ref.getChildAt(i).text = str;
break;
}
}
}
}
De notat este faptul ca numele campului text dinamic este inutil in a lua referinta din o stare de tip Sprite folosind metoda getChildByName - metoda va intoarce null. Pentru a modifica mai multe label-uri din aceeasi stare trebuie sa identificam pe care din texte modificam in timpul parcurgerii copiilor (se poate face fie cunoscand exact ordinea fiecarui copil in display list, fie populand fiecare text cu un text dummy ce va ajuta la identificare sau folosind alte metode).
Folosind metoda prezentata mai sus se pot modifica nu numai TextField-urile din SimpleButtons, dar si alte tipuri de elemente. Oricum, daca este nevoie de mai mult control si schimbari legate de buton se poate considera crearea unei clase custom bazata pe clasa MovieClip.