Невозможно последовательно соединить иерархию отображения с тегом / значением MXML. Вы можете сделать это в ActionScript, как вы указали, но даже это, вероятно, будет считаться плохой практикой.
Я укажу, что color на метке и fontStyle на TextInput не являются свойствами. Это стили Итак, код у вас есть:
myInput.cLabel.color = "0xffffff";
Скорее всего, возникнет ошибка, потому что цвет не является свойством. Вы должны использовать код, подобный этому:
myInput.cLabel.setStyle('color',"0xffffff");
Однако, поскольку стили обычно наследуются детьми; Я подозреваю, что на компоненте верхнего уровня вы можете установить стиль, и он сразу же просочится к детям. Итак, вы должны просто сделать:
myInput.setStyle('color',"0xffffff");
Или в MXML:
<local:myInput prompt="name" input="please enter name" color="0xffffff" fontStyle="bold" >
</local:myInput>
И это должно просачиваться вниз. Все может стать сложнее, если вы хотите установить стили для дочерних компонентов индивидуально.
Но вернемся к исходному вопросу о свойствах. Чтобы сохранить компонент в инкапсуляции, вы должны создать свойства, которые установлены для дочерних элементов. Примерно так:
private var _property : String;
public function get property():String{
return _property;
}
public function set property(value:String){
_property = value;
myChildComp.property = value;
}
Может быть плохо, если вам нужно сделать это для большого количества свойств. Если инкапсуляция этого компонента не является приоритетом; просто установите их в ActionScript.