如何停止切换按钮以更改状态

时间:2010-11-12 20:50:07

标签: flex

我试图在点击时根据某些条件停止切换按钮以更改状态,但我不知道该怎么做。有可能吗?

我不想禁用该按钮,因为flex 3样式不允许我获得我需要的视觉效果。

编辑:

我试过这个,但它不起作用:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="_init()"          
>
<mx:Button label="toggle" id="button" toggle="true"/>
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;

private function _init():void{

    button.addEventListener(FlexEvent.BUTTON_DOWN, preventDef, true, 50);
    button.addEventListener(MouseEvent.CLICK, preventDef, true, 50);
    button.addEventListener(Event.CHANGE, preventDef, true, 50);
    button.addEventListener(MouseEvent.MOUSE_DOWN, preventDef, true, 50);
    button.addEventListener(MouseEvent.MOUSE_UP, preventDef, true, 50);
}

private function preventDef(e:Event):void{
    e.preventDefault();
}
]]>
</mx:Script>
</mx:Application>

3 个答案:

答案 0 :(得分:2)

如果有帮助,您可以使用复选框来获得切换效果。但是,如果您坚持使用切换按钮来处理此事,则需要为您的按钮注册更改事件,然后在计算调用后

event.preventDefault(); 
MouseEvent对象上的

方法,以防止它被切换。

答案 1 :(得分:2)

子类ToggleButton,覆盖方法buttonReleased:

override protected function buttonReleased():void {
    if(dispatchEvent(new FlexEvent(FlexEvent.CHANGING, false, true)))
        super.buttonReleased();
}

将调度事件设置为可取消非常重要。

在您的按钮上添加两个监听器。 Event.CHANGE和FlexEvent.CHANGING。对于CHANGING处理程序,请执行计算并在需要时调用preventDefault。

private function verifyChange(e:FlexEvent):void {
    if (shouldPreventToggle())
        e.preventDefault();
}

答案 2 :(得分:0)

如果您不需要切换按钮,那么为什么不使用常规按钮?