【问题标题】:How to address the object that has been Clicked but not the children inside it?如何处理已单击的对象而不是其中的子对象?
【发布时间】:2011-08-05 17:24:34
【问题描述】:

在MouseEvent.CLICK 函数中,我通常使用e.target 来处理我单击的movieClip,但这仅适用于内部没有任何子项(例如文本和其他符号)的movieClip。当它里面有孩子时, e.target 返回 Mc 里面的孩子,而不是 Mc 本身。 e.currentTarget 也不起作用;它返回 [object MovieClip] 但不返回 Mc 的实例名称。无论如何我可以修复它吗? 谢谢。

【问题讨论】:

  • 您需要在孩子中进行任何用户交互吗?如果没有,那么您可以通过设置 mc.mouseChildren = false 来禁用子级交互

标签: flash actionscript-3 programming-languages click


【解决方案1】:

要获取实例名称,您需要e.currentTarget.name

【讨论】:

    【解决方案2】:

    e.target = 被点击的元素。

    e.currentTarget = 已注册监听器的元素。

    假设一个红框包含一个蓝框:

    red.addEventListener(MouseEvent.MOUSE_CLICK, redClick);
    

    如果点击红色框(内蓝色框外):

    e.target = 红色

    e.currentTarget = 红色

    如果你点击蓝色框:

    e.target = 蓝色

    e.currentTarget = 红色


    为了防止您的蓝框分派点击事件,您可以禁用子元素的鼠标事件:

    red.mouseChildren = false;
    

    如果你然后点击蓝色框:

    e.target = 红色

    e.currentTarget = 红色

    【讨论】:

      【解决方案3】:

      将预期目标的mouseChildren 设置为false 以阻止事件传播到MovieClip 的子项中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-09
        相关资源
        最近更新 更多