【问题标题】:Attach event listeners to all items on a layer in Paper.js将事件侦听器附加到 Paper.js 中图层上的所有项目
【发布时间】:2021-12-29 01:31:55
【问题描述】:

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

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

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

链接:http://paperjs.org/reference/item/#onmouseenter

【问题讨论】:

    标签: javascript event-handling paperjs


    【解决方案1】:

    您只需攻击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}`
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多