Flex 3:当只有一个菜单项可用时,如何将PopupButton更改为常规Button?

时间:2009-08-20 20:22:48

标签: flex user-interface button menu

我有一个只包含2个动作的PopUpButton。这两个操作彼此完全相反,并将对象上的布尔属性从true切换为false或false切换为true。为了避免冗余,我一次只显示一个动作。因此,如果属性为true,则不会显示将其更改为true的操作。

如果我的PopUp菜单只有一个选项,我想删除显示的菜单,并基本上恢复PopUpButton的行为,看起来像一个常规按钮。到目前为止,我没有在ActionScript中找到一个很好的方法,无需添加,删除或修改按钮的样式。

有没有一种很好的方法可以简单地告诉按钮隐藏PopUp切换?

PS :在我的具体示例中,如果我只使用了切换按钮,则可能会更容易。但是,我想在处理对象数组时重用此按钮。如果我有多个,那么该属性可能同时是真假。在这种情况下,我想显示菜单,以便他们可以选择将所有对象的属性设置为的选项。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用State来实现此目的。它将删除多选项弹出按钮并在其位置显示一个新的单选项按钮:

<mx:states>
  <mx:State name="singleOptionState">
    <mx:AddChild relativeTo="{multiOptionPopUpButton}" position="after">
      <mx:Button id="singleOptionButton" 
        width="80" 
        label="{buttonLabel}" 
        click="onClick(event)" />
    </mx:AddChild>
    <mx:RemoveChild target="{multiOptionPopUpButton}" />
  </mx:State>
</mx:states>

当然,名称和属性将特定于您的应用。

当您确定是时候显示单选项按钮时

currentState = "singleOptionState";

当需要显示多选项弹出按钮时,只需执行以下操作:

currentState = "";

希望这会有所帮助。