Как остановить тумблер от изменения состояния - PullRequest
0 голосов
/ 12 ноября 2010

Я пытаюсь помешать переключателю переключать состояние при нажатии, основываясь на некоторых условиях, но я не уверен, как это сделать.Возможно ли это?

Я не хочу отключать кнопку, поскольку стили 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 ]

2 голосов
/ 13 ноября 2010

Если это поможет, вы можете использовать флажок, чтобы получить эффект переключения. Однако, если вы настаиваете на использовании кнопки переключения для этого вопроса, вам нужно зарегистрировать событие изменения для вашей кнопки, а затем, после ваших расчетов, вызвать

event.preventDefault(); 

метод для вашего объекта MouseEvent, чтобы предотвратить его переключение или нет.

2 голосов
/ 08 августа 2011

Подкласс ToggleButton, метод переопределения buttonReleased:

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

Важно установить отправляемое событие как отменяемое.

К вашей кнопке добавьте двух слушателей. Event.CHANGE и FlexEvent.CHANGING. Для обработчика CHANGING сделайте ваши расчеты и при необходимости вызовите protectDefault.

private function verifyChange(e:FlexEvent):void {
    if (shouldPreventToggle())
        e.preventDefault();
}
0 голосов
/ 13 ноября 2010

Если вам не нужна кнопка переключения, то почему бы не использовать обычную кнопку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...