Если вы ищете динамические состояния - здесь - ваше решение (Первые два состояния - default
и big
- добавляются во время компиляции. Третье состояние Bang-a-Gong
добавляется ввремя выполнения):
private function init():void {
// Create a new state and give it a name.
var stateBang:State = new State();
stateBang.name = 'Bang-a-Gong';
// Set the overrides with an array of AddChild, AddItems,
// RemoveChild, SetEventHandler, SetProperty, and SetStyle
stateBang.overrides =
[ new SetProperty( btn, "label", "Bang-a-Gong" ),
new SetProperty( btn, "height", "150" ),
new SetProperty( btn, "width", "300" ),
new SetStyle( btn, "fontSize", "22" ),
new SetStyle( btn, "fontWeight", "bold" ),
new SetStyle( btn, "color", "#FF0000" ) ];
// Add our new state to the available states of this component.
this.states.push( stateBang );
// Just for kicks lets add a transition for this state.
var transition:Transition = new Transition();
transition.toState = 'Bang-a-Gong';
// Create a new transition effect.
var resize:Resize = new Resize( btn );
// Create an composite effect, either: Sequence or Parallel.
var sequence:Sequence = new Sequence();
// Add our resize effect.
sequence.addChild( resize );
// now add our composition effect to the transition we created.
transition.effect = sequence;
// Push our new transition into the transitions array for this component.
this.transitions.push( transition );
}
В другом случае, если я правильно понял, вы должны создать некоторый объект в основном приложении и получить к нему доступ из всех дочерних компонентов через FlexGlobals.topLevelApplication
.
Если вы хотите изменить дочерние состояния, у вас должен быть некоторый экземпляр с уже определенными состояниями как минимум в одном месте, а затем скопировать их в дочерние компоненты, но какой смысл, если они все являются пользовательской логикой?*
Итак, дайте мне знать, если это поможет.