【问题标题】:How to stop Mouse Out event on Flex Canvas firing for child elements如何在 Flex Canvas 上停止针对子元素触发的 Mouse Out 事件
【发布时间】:2010-10-08 02:34:11
【问题描述】:

我将 Canvas itemRenderer 用于我用来显示图像的容器。请参阅下面的伪代码。

image = new Image();
image.source = data.@thumb;
this.addChild(image);
this.addEventListener(MouseEvent.MOUSE_OVER, enlarge(image));
this.addEventListener(MouseEvent.MOUSE_OUT, shrink(image)); 

当我将鼠标悬停在画布上时,会调用放大功能。但是,只要我将鼠标移到图像或另一个子元素上,就会触发 MOUSE_OUT 事件。

谁能指出我禁用这种行为的方法?

谢谢:)

【问题讨论】:

    标签: apache-flex actionscript-3 canvas mouseout


    【解决方案1】:

    您应该改用MouseEvent.ROLL_OVERMouseEvent.ROLL_OUT 事件。

    来自 Flash CS4 文档:

    当鼠标从不是其子对象之一的对象进入显示对象的区域或其任何子对象的区域时,显示对象会调度 rollOver 事件。这与 mouseOver 事件的行为不同,鼠标每次进入显示对象容器的任何子对象的区域时都会调度该事件,即使鼠标已经在显示对象容器的另一个子对象上也是如此。

    【讨论】:

    • 谢谢,效果很好。但是,如果我打开一个组合框下拉菜单,它会触发“应用程序”ROLL_OUT...有什么想法吗?
    • 组合框下拉菜单可能位于 PopUpManager 上(如果您使用的是 Flex),或者可能位于舞台本身(对于其他任何东西),这可能在您的应用程序之外,所以我认为这是意料之中的事。
    【解决方案2】:

    我同意 Josh 的观点,ROLL_OVER 事件似乎更适合您正在做的事情。但是,您应该注意 flash.display.DisplayObjectContainerUIComponent 的祖先)的 mouseChildren 属性。

    【讨论】:

      【解决方案3】:

      推出适合我。 关于组合框问题: 您还可以检查事件的目标是否是容器中的子项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 1970-01-01
        • 2019-07-14
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多