ButtonBarButton自定义翻转/退出事件

发布于 2024-10-07 02:52:55 字数 96 浏览 4 评论 0原文

向按钮栏按钮添加自定义翻转和卷展栏的最佳方法是什么?我尝试在我正在使用的自定义皮肤中添加事件侦听器,但鼠标事件不会被触发。

有什么想法吗?

谢谢!

What is the best way to add a custom rollover and rollout to a buttonbarbutton? I tried adding the eventlisteners in the custom skin I am using but the mouseevents do not get fired.

Any ideas?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南巷近海 2024-10-14 02:52:55

好吧,我不会说这是最好的方法,但我确实有一个解决方案。

在我制作的 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 并查看与哪个按钮进行交互,并在函数内分派一个自定义事件,该事件会冒泡到我的视图。

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

谢谢!

Ok, I won't say this is the best way to do it by any means, but I do have a solution.

In the ButtonBar Skin I made I add a listener for the creationComplete of the DataGroup and then add a listener to each of the elements inside it.

<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>

This allows the rollover/rollout events to get hit for each button, I can then check the e.currentTarget and see which button was interacted with and dispatch a custom event inside the functions which bubble up to my view.

I was hoping the was a cleaner way to do it and that could very well be the truth and I just don't know how to do it. Any one else have a different idea?

Thanks!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文