我的应用程序中出现了弹性状态问题。我要做的是创建完成应用程序,从服务器获取用户角色guest / user / superUser(基于用户名和密码),然后根据该信息设置状态客户端。我的.mxml类需要包含基于该状态的某些图形元素。我正在讨论基于项目的应用程序级别定义的状态包含元素的问题。我试图避免在每个需要它的.mxml文件中定义状态。
我觉得这可能很容易让我忽略,或者有更好的方法来做到这一点。任何示例输入都非常有用。
我知道这会返回当前状态
Application.application.currentState;
但我希望几乎“填充”
<mx:states>
<mx:State name="state1"/>
</mx:states>
来自Application 中定义的状态的每个.mxml文件的
答案 0 :(得分:0)
如果您正在寻找动态状态 - here是您的解决方案(前两个状态 - default
和big
- 在编译时添加。第三个状态{{1}在运行时添加}:
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 );
}
从所有子组件访问它。
如果你想改变子状态,你应该在一个地方将一些已定义状态的实例作为最小状态,然后将它们复制到子组件,但是它们是否都是自定义逻辑会有什么意义呢?
所以,请告诉我,如果它有帮助。