【问题标题】:EaselJS - container mouse events handlingEaselJS - 容器鼠标事件处理
【发布时间】:2016-02-03 21:55:19
【问题描述】:

我有一个包含多个元素的容器。我希望能够检测到对容器的子项和容器区域(由我定义的矩形)的点击。

每当我在容器上定义 hitArea 时,它的子级就不再接收鼠标事件——而是将它们分派到容器中。但是,如果没有hitArea,我无法检测到容器区域的点击。

说明问题的小提琴:

我想到的唯一solution 是使用hitArea 并在每个事件上验证容器中没有可以发送它的子节点。然而,这种方法非常烦人:我必须捕获所有类型的鼠标事件,尽管我在容器级别对它们感兴趣。

这种情况有简单的解决方案吗?

【问题讨论】:

    标签: javascript createjs easeljs


    【解决方案1】:

    我决定使用另一种解决方法 - 我创建了一个DisplayObject,为其指定了hitArea,并将其作为第一个子元素添加到Container,缺点是我必须同时定义事件处理程序在那个 hitArea-object 和 Container 处。但与我发现的其他解决方案相比,它需要的工作要少得多。

    更新fiddle

    【讨论】:

    • 对 hitArea 的其余部分使用子子项绝对是正确的方法——但您可以只听container,并检查event.target 以确定被击中的内容,而不是有多个事件监听器。 if (event.target == circle) { doSomething(); }
    • @Lanny,感谢您的回复,但我已经检查过了,它不起作用,我是否遗漏了什么:jsfiddle.net/rs462n76/7
    • 如果你设置了一个 hitArea,mousechildren 将被忽略(这是设计)。使用您的第二种方法(另一个是您需要的大小的孩子),您可以检查目标以查看单击的内容。对您的小提琴进行一些小的编辑,内联 cmets。 jsfiddle.net/rs462n76/8
    猜你喜欢
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多