将事件侦听器附加到 Paper.js 中图层上的所有项目

Attach event listeners to all items on a layer in Paper.js

在 jQuery 中,我可以使用 $("p") 将事件附加到段落等所有元素。 Paper.js 是否存在类似的东西。我尝试使用 project.activeLayer.children.onMouseEnter 但没有用。

我正在考虑遍历 onFrame 函数中的所有子项,但这似乎是错误的。它可能会将多个事件侦听器附加到同一个项目。所以,所有项目都会有很多事件监听器,但我不确定。

将事件侦听器附加到 Paper.js 项目层中所有当前和未来项目的最佳方法是什么?

Link: http://paperjs.org/reference/item/#onmouseenter

你只需要攻击 Tool 的事件侦听器。
将传递给侦听器的 event 参数将有一个 item 属性,这是事件目标项。
这是一个简单的 sketch 演示。

tool.onMouseDown = (event) => console.log(event.item && event.item.name);

let id = 0;

drawRandomCircle();
setInterval(drawRandomCircle, 2000);

new PointText({
    content: 'Click on a circle to log its name',
    point: view.center + [0, -80],
    justification: 'center'
});

function drawRandomCircle() {
    new Path.Circle({
        center: Point.random() * view.size,
        radius: 50,
        fillColor: Color.random(),
        name: `item ${++id}`
    });
}