Flex checkBox: отключить изменение состояния при нажатии на ярлык - PullRequest
1 голос
/ 10 ноября 2010

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

Событие click нельзя отключить, поскольку оно используется в родительских компонентах.

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

Спасибо, Рафал

Ответы [ 3 ]

3 голосов
/ 10 ноября 2010

Марти Питт был очень близок к правильному ответу.Я добавил обработчик событий в его код, который останавливает распространение - и теперь он работает отлично (как и ожидалось)!

Код ниже - это класс, расширяющий mx:CheckBox:

        override protected function createChildren():void {
            super.createChildren();
            this.mouseChildren = true;
            textField.mouseEnabled = false;
            textField.addEventListener(MouseEvent.CLICK, textFieldClickHandler);
        }

        protected function textFieldClickHandler(me:MouseEvent):void{
            me.stopImmediatePropagation();
        }

Спасибо.

1 голос
/ 10 ноября 2010

Если это флажок Halo, я бы создал подкласс и переопределил createChildren(), например:

override protected function createChildren():void {
     super.createChildren();
      // in Button, this is false by default, however we want to restrict
      // clicking to the button itself, not the label, so allow the children
      // to recieve mouse events, to prevent the button from dispatching them.
     this.mouseChildren = true;
     textField.mouseEnabled = false;
}

Это похоже на довольно грязный хак, но это может сработать (я не проверял).

Если это флажок Spark, то вы можете просто создать отдельный скин. Гораздо чище!

1 голос
/ 10 ноября 2010

Обходной путь - флажок без метки и отдельной метки рядом.

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