我试图在点击时根据某些条件停止切换按钮以更改状态,但我不知道该怎么做。有可能吗?
我不想禁用该按钮,因为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>
答案 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)
如果您不需要切换按钮,那么为什么不使用常规按钮?