Если заменить
getChildAt, name, this['i' + indx] на массив, то можно сократить код в разы.
Я бы создал класс который получал бы ссылки на контейнеры для иконок и текстовых полей и в них создавал иконку и текстовое поле. Или давал сразу ссылки на иконку и текстовое поле.

Код AS3:
//class DoubleButton
public function DoubleButton(){
}
public function set icon(value:DisplayObject):void{
//...
}
public function set textField(value:TextField):void{
//...
}
private function rollOverHandler(event:MouseEvent):void{
//...
}
private function clickHandler(event:MouseEvent):void{
dispatchEvent(new Event("boubleButtonClicked", true));
}