有没有办法拥有全局Flex 4状态(用户角色)?

时间:2010-09-16 21:18:21

标签: flex flex4 mxml states

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

我觉得这可能很容易让我忽略,或者有更好的方法来做到这一点。任何示例输入都非常有用。

我知道这会返回当前状态

Application.application.currentState;

但我希望几乎“填充”

<mx:states>
    <mx:State name="state1"/>
</mx:states>
来自Application

中定义的状态的每个.mxml文件的

1 个答案:

答案 0 :(得分:0)

如果您正在寻找动态状态 - here是您的解决方案(前两个状态 - defaultbig - 在编译时添加。第三个状态{{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 ); } 从所有子组件访问它。

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

所以,请告诉我,如果它有帮助。