拦截所有按钮点击

发布于 2024-10-16 23:20:27 字数 149 浏览 5 评论 0原文

我的问题是:

有没有一种方法可以拦截我的 Flex(air) 应用程序中的所有按钮单击事件,因为我需要在单击某个按钮时添加声音,并且我不想遍历所有屏幕并添加此功能还更改每个按钮中的每个单击事件。

那么有什么办法可以做到这一点吗?

谢谢!

My question is:

Is there a way that I can intercept all button click event in my Flex(air) app, because I need to add a sound when some button is clicked, and I dont want go over all screens and add this function and also change each click event in each button.

So is there a way that I can do this?

Thanks!

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

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

发布评论

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

评论(1

还如梦归 2024-10-23 23:20:27

这取决于您的具体站点结构,执行此操作的容易程度。您的按钮是否都有自己独特的类,或者共享一些显着特征(实例名称中常见的匈牙利风格 _btn 标记)?如果是这样,您可以尝试这样的操作:

root.addEventListener(MouseEvent.CLICK, onButtonClickPlaySound);
private function onButtonClickPlaySound(e:MouseEvent):void{
    if(e.target is ExtendedButton){
        // play sound here...
    }

    // or....

    if(e.target.name.indexOf("hungariannotation") >= 0){
        // play sound here...
    }
}

如果显示列表中的处理程序停止事件传播,则这将不起作用。鼠标点击必须一直冒泡到根。

It depends on your specific site structure how easy it might be to do this. Do your buttons all have their own unique Class, or otherwise share some distinguishing feature (a common hungarian style _btn marker in their instance names)? If so, you could try something like this:

root.addEventListener(MouseEvent.CLICK, onButtonClickPlaySound);
private function onButtonClickPlaySound(e:MouseEvent):void{
    if(e.target is ExtendedButton){
        // play sound here...
    }

    // or....

    if(e.target.name.indexOf("hungariannotation") >= 0){
        // play sound here...
    }
}

This won't work if handlers down the display list stop event propagation. The mouse clicks must bubble all the way to the root.

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