Flex:在每种状态下更改Enabled / Disabled按钮的样式

时间:2013-02-06 13:44:47

标签: actionscript-3 flex flash-builder

我有一个特定的按钮,包含在一些州。我必须在这些状态中禁用或启用它。

但这不是问题。 实际上问题是:我有2个不同的样式类,我希望将它们中的每一个分配给处于活动状态内的按钮的启用或禁用。

所以我必须在活动状态检查中,如果现在按钮已启用,请为其分配[例如] .red 样式类,如果禁用,则指定 .blue style class。

我该怎么办? 提前谢谢......

1 个答案:

答案 0 :(得分:1)

您应该能够在MXML中使用点符号来实现此目的:

<s:Button styleNanem.state1 ="red" styleName.state2="blue" />

我很确定这种语法是在Flex 4中引入的。


如果您需要在更改enabled属性时更改按钮的状态,则可以在函数中将其循环:

protected function changeButtonState(enabledValue:Boolean, styleName:String):void{
 this.button.enabled = enabledvalue;
 this.button.styleName = styleName;
}

不使用直接设置enabled属性,而是使用上面的方法;并且您可以根据状态确定styleName。


第三次更新以回应对此帖的评论

几乎Flex Framework类中的每个属性都在属性更改时调度propertyChanged事件。因此,您可以在按钮上收听enabledChanged事件。未设置元数据,因此您必须在ActionScript中添加事件侦听器:

button.addEventListener('enabledChanged',onEnabledChanged);

protected function onEnabledChanged(event:Event):void{
  if(currentState = 'state1'){
    if(button.enabled){
      button.styleName = 'blue';
    } else {
      button.styleName = 'red';
    }
  } else if (currentState = 'state2'){
    if(button.enabled){
      button.styleName = 'green';
    } else {
      button.styleName = 'orange';
    }

  }
}