【问题标题】:Disable mouse event for a specific child of a movieclip为影片剪辑的特定子项禁用鼠标事件
【发布时间】:2014-02-26 23:34:00
【问题描述】:

我有一个包含很多孩子的影片剪辑。 其中一个是平面设计师放在那里的一个大(无用)阴影,让我的生活更艰难(可能也是用户的阴影) :)

现在我面临一个小问题:阴影正在捕捉附加到主 MovieClip(其父级)的 MouseEvents,这非常糟糕,因为它与图形的其余部分相距甚远。我现在正试图避免它。

显然我已经尝试将shadow mc的属性mouseEnabledmouseChildren设置为false,但它不起作用。

我找到了一个以前的帖子 (here),面临同样的情况。但是接受的解决方案看起来对我不起作用。

我错过了什么?

【问题讨论】:

  • 您确定在阴影 MovieClip 上将 mouseEnabledmouseChildren 设置为 false 时选择的是阴影 MovieClip 而不是众多其他子项之一?
  • 是的,阴影离其他元素太远了,它一定是它
  • 为了完全 100% 确定,您是否调试过这段代码,它表明显示对象实际上已被选中。也许通过追踪,通过名称来识别对象,类似的东西?

标签: actionscript-3 events button


【解决方案1】:

如果 mouseEnabledmouseChildren 不适合您,请使用 e.target.name 属性。

但首先你必须给那个影子MovieClip 一个name(比如shadowMC)。

如果你是动态添加的然后使用,

yourDynamicMC.name = "shadowMC"

如果在舞台上手动添加,则将实例名称命名为“shadowMC”,

然后,在您有 MouseEvent 函数的代码中 parent MovieClip 添加以下行

if(e.target.name != "shadowMC")
{
    //Then proceed

}

【讨论】:

    【解决方案2】:

    阅读您的问题,我假设您已经尝试将父 MovieClip 的 mouseChildren 设置为 true,而将 mouseEnabled 设置为 false,然后将子项的 mouseEnabled 设置为 true(阴影除外)。这个解决方案在我看来应该可以工作,所以我猜这个事件可能会被你的电影剪辑的一个父级捕获(你没有提供太多关于这个的信息)。

    尝试在舞台上添加一个监听器以查看哪个对象正在接收您的 MouseEvents:

    import flash.utils.getQualifiedClassName;
    stage.addEventListener(MouseEvent.CLICK, onClick);
    private function onClick(event:MouseEvent):void
    {
        trace(event.target.name, getQualifiedClassName(event.target));
    }
    

    【讨论】:

      【解决方案3】:

      尝试更改 MovieClip 的点击区域。请参阅 MovieClip 文档 here,这将覆盖您的 MovieClip 区域。

      【讨论】:

        猜你喜欢
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        • 2014-10-15
        • 1970-01-01
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多