ButtonBarButton自定义翻转/输出事件

时间:2010-12-12 17:22:43

标签: flex flex4

将自定义翻转和卷展栏添加到按钮栏按钮的最佳方法是什么?我尝试在我正在使用的自定义皮肤中添加eventlisteners但是不会触发mouseevents。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我不会说这是通过任何方式做到这一点的最佳方法,但我确实有一个解决方案。

在ButtonBar Skin中,我为DataGroup的creationComplete添加了一个监听器,然后为其中的每个元素添加一个监听器。

<fx:Script>
    <![CDATA[
        import com.mattel.styleguide.events.DesignDropDownEvent;

        import mx.controls.Alert;

        private function init():void
        {
            for (var i:int = 0; i < dataGroup.numElements; i++)
            {
                dataGroup.getElementAt(i).addEventListener(MouseEvent.ROLL_OVER, onRollOver);
                dataGroup.getElementAt(i).addEventListener(MouseEvent.ROLL_OUT, onRollOut);
            }
        }

        private function onRollOver(e:MouseEvent):void
        {
            //dispatch custom event
        }

        private function onRollOut(e:MouseEvent):void
        {
            //dispatch custom event
        }
    ]]>
</fx:Script>

<s:DataGroup id="dataGroup" width="100%" height="100%" creationComplete="init()">
    <s:layout>
        <s:ButtonBarHorizontalLayout gap="-1"/>
    </s:layout>
</s:DataGroup>

这允许每个按钮点击翻转/推出事件,然后我可以检查e.currentTarget并查看与之交互的按钮,并在功能中调度自定义事件,这些事件会冒泡到我的视图中。

我希望这是一种更干净的方式,这很可能是事实,我只是不知道该怎么做。其他人有不同的想法吗?

谢谢!