Flex checkBox:单击标签时禁用状态更改

时间:2010-11-10 09:07:07

标签: flex checkbox

当点击时,我希望原生Flex复选框仅更改状态。如果用户单击标签,则状态不应更改。

点击事件无法被静音,因为它在父母组件中使用。

任何想法如何获得这样的功能?如何检测,该用户点击了标签

谢谢, 拉法尔

3 个答案:

答案 0 :(得分:3)

Marty Pitt 非常接近正确答案。我已经为他的代码添加了一个事件处理程序,它会阻止传播 - 现在它完美地工作(正如预期的那样)!

以下代码是一个扩展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 :(得分:1)

解决方法 - 没有标签的复选框和附近的单独标签。

答案 2 :(得分:1)

如果它是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复选框,那么您可以创建一个单独的皮肤。更干净!