Вдохновившись сообщением от Wolsh, сваял вот такой примерчик
Main

Код AS3:
package {
import components.ManagerObjects;
import flash.display.Sprite;
[SWF(backgroundColor="0xFFFFFF", width="800", height="600", frameRate="30")]
public class Main extends Sprite {
private const PAD:uint = 10;
//CONSTRUCTOR
public function Main() {
init();
}
private function init():void {
// сообщение по дифолту | высота текстФилда | имя кнопок | кол.во | сдвиг
var managerObject:ManagerObjects = new ManagerObjects("ТЫЦ", 100, "Button", 5, PAD);
addChild(managerObject);
managerObject.y = PAD
managerObject.x = PAD
}
}//class
}//package
ManagerObjects, здесь тусят все объекты, которые у нас есть(кнопки, текстФиелд)

Код AS3:
package components {
import components.ManagerButton;
import components.ManagerText;
import events.CommonEvent;
import flash.display.Sprite;
public class ManagerObjects extends Sprite {
//VARIABLES
private var mButton:ManagerButton;
private var mText:ManagerText;
//CONSTRUCTOR
public function ManagerObjects(name:String, heightText:uint, nameButton:String, numButton:uint, PAD:uint){
init(name, heightText, nameButton, numButton, PAD)
}
private function init(name:String, heightText:uint, nameButton:String, numButton:uint, PAD:uint):void {
mText = new ManagerText("ТЫЦ", 100)//дали первоначальное сообщение текст фиелду, задали высоту текст фиелду
addChild(mText);
//добавили кнопки
mButton = new ManagerButton("Button", 5, PAD);// имя кнопок | кол.во | сдвиг
addChild(mButton);
mButton.y = mText.height+PAD; // выровняли кнопки по высоте с текст филдом
mText.width = mButton.width; // выровняли текст фиелд по соотношению с кол.вом кнопок
mButton.addEventListener(CommonEvent.MESSAGES, setupMes); // получаем события при нажатии на кнопки
}
private function setupMes(e:CommonEvent):void{
mText.sendMessage(e.txtMessage); //отправили данные манагерТексту
}
}
}
ManagerButton, здесь тусят только кнопки

Код AS3:
package components {
import controls.SingleButton;
import events.CommonEvent;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class ManagerButton extends Sprite {
//VARIABLES
private var button:SingleButton;
//CONSTRUCTOR
public function ManagerButton(name:String, num:uint, PAD:uint) {
init(name, num, PAD);
}
private function init(name:String, num:uint, PAD:uint):void {
for(var i:uint = 0; i < num; i++){
button = new SingleButton(name+ " - "+i);
button.x = Number(button.width+PAD)*i;
button.name = name+i;
button.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
addChild(button);
}
}
private function mouseDown(e:MouseEvent):void{
var txtMessage:String = e.currentTarget.name;
dispatchEvent(new CommonEvent(CommonEvent.MESSAGES, txtMessage));
//trace(e.currentTarget.name+"")
}
}//class
}//package
ManagerText, здесь основная цель манагера заключается в получении и отправке обновленных данных самому текстФиелду, но по сути в данном примере, можно было и без него обойтись, и отправлять данные на прямую.

Код AS3:
package components {
import events.TextFieldEvent;
import flash.display.Sprite;
public class ManagerText extends Sprite {
//VARIABLES
private var textInput:TextInput;
//CONSTRUCTOR
public function ManagerText(message:String, heightNum:uint){
init(message, heightNum);
}
private function init(message:String, heightNum:uint):void{
textInput = new TextInput(message, heightNum);
addChild(textInput);
}
public function sendMessage(txt:String):void {
textInput.replaceMessage(txt);
}
}//class
}//package
TextInput, собственно сам текстФиелд.

Код AS3:
package components {
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldType;
public class TextInput extends Sprite {
//VARIABLES
private var txt:TextField;
//CONSTRUCTOR
public function TextInput(message:String, heightNum:uint){
init(message, heightNum);
}
private function init(message:String, heightNum:uint):void{
txt = new TextField();
txt.type = TextFieldType.INPUT;
txt.height = heightNum;
txt.width = 400;
txt.border = true;
txt.multiline = true;
txt.wordWrap = true;
txt.text = message;
addChild(txt);
}
public function replaceMessage(_txt:String):void {
txt.text = _txt;
}
}//class
}//package
SingleButton, класс реализует кнопку с текстфилдом.

Код AS3:
package controls {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
public class SingleButton extends Sprite {
private var txt:TextField;
private var label:String;
private const WIDTH:uint = 50;
public const HEIGHT:uint = 30;
private var sprite:Sprite;
private var format:TextFormat;
//CONSTRUCTOR
public function SingleButton(name:String) {
label = name;
init(label);
}
private function init(label:String):void {
format = new TextFormat();
txt = new TextField;
addChild(txt);
txt.text = label
txt.autoSize = TextFieldAutoSize.LEFT;
//format
format.font = "Verdana";
format.color = 0x000000;
format.size = 20;
txt.height = HEIGHT;
txt.setTextFormat(format);
txt.defaultTextFormat = format;
txt.selectable = false;
addEventListener(MouseEvent.ROLL_OVER, onRollOver);
addEventListener(MouseEvent.ROLL_OUT, onRollOut);
sprite = new Sprite();
sprite.graphics.beginFill(0xFFFFFF);
sprite.graphics.drawRoundRect(0, 0, txt.width, HEIGHT, 10, 10);
sprite.graphics.endFill();
addChild(sprite);
sprite.addChild(txt);
}
private function onRollOver(event:MouseEvent):void {
updateGraphics(0x000000);
}
private function onRollOut(event:MouseEvent):void {
updateGraphics(0xFFFFFF);
format.color = 0x000000;
txt.setTextFormat(format);
}
private function updateGraphics(color:uint):void {
graphics.clear();
sprite.graphics.beginFill(color);
sprite.graphics.drawRoundRect(0, 0, txt.width, HEIGHT, 10, 10);
sprite.graphics.endFill();
format.color = 0xFFFFFF;
txt.setTextFormat(format);
}
}//class
}//package
В проектировании приложений очень помогает создание схем классов, их взаимодействие. Не ленитесь чертить схемки. Даже если вы один задействованы в проекте. В последствии, если придется вернуться к проекту, вспомнить, как в нем всё устроено, благодаря схемам, будет на много проще.
..и конечно же
Почаще слушайте человека с ником Wolsh, плохого никогда не посоветует
