1

我在我的应用程序中遇到了弹性状态问题。我要做的是在应用程序的创建完成时,从服务器获取用户角色 guest/user/superUser(基于用户名和密码),然后根据该信息设置状态客户端。我的 .mxml 类需要包含基于该状态的某些图形元素。我遇到了根据项目应用程序级别定义的状态包含元素的问题。我试图避免必须在每个需要它的 .mxml 文件中定义状态。

我觉得这可能是我忽略的一件容易的事情,或者也许有更好的方法来做到这一点。任何示例输入都非常有帮助。

我知道这会返回当前状态

Application.application.currentState;

但我希望几乎“填充”

<mx:states>
    <mx:State name="state1"/>
</mx:states>

来自应用程序中定义的状态的每个 .mxml 文件

4

1 回答 1

0

如果您正在寻找动态状态 -是您的解决方案(前两个状态 -defaultbig- 在编译时添加。第三个状态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.

如果你想改变子状态,你应该在一个地方有一些已经定义为最小值的实例,然后将它们复制到子组件,但是如果它们都是自定义逻辑有什么意义呢?

所以,让我知道,如果它有帮助。

于 2010-09-19T17:23:31.963 回答