纸张js hittest并不像我预期的那样在Compound Path中起作用

时间:2014-07-04 20:16:56

标签: paperjs

在纸张js中,我创建了一个复合路径,现在我想在其上实现拖放。复合路径有两个孩子(两个圆圈)。 问题在于:当我将鼠标事件附加到复合路径(使用hittest获取整个路径),然后单击它时,我只获得第一个子路径的引用。如果我点击第二个子路径,则hittest返回undefined,而我想获得复合路径。

有什么想法吗? 感谢。

Francesco R。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,但很少有办法让它发挥作用。

  1. 我假设您使用Tool。如果是这样,您可以尝试使用ToolEvent item对象

    示例:

    mousedown: function (event) {
        if (event.item) {
            // event.item is what you need
        }
    },
    
  2. 如果您知道要测试的项目是什么 - 例如,您想检查用户是否点击了某个特定项目,则可以从此项目中调用hitTest()

    示例:

    mousedown: function (event) {
        var hit = yourItem.hitTest(event.point, { tolerance: 10 });
        if (hit) {
            // now you can use hit.item or yourItem ('cos you know the item)
        }
    },
    
  3. 您可以尝试hitTest options。在那里,您可以指定您要查找的项目类别:

      

    options.class :仅重新测试某个项目类及其子类:图层路径 CompoundPath Shape Raster PlacedSymbol PointText ,等

  4. 告诉我这是否有帮助或提供一些测试用例。您可以创建paperscript sketch here并在运行草图后向我们提供您在地址栏中的链接。

    编辑:其实我已经为你创建了一个草图,展示了这些方法:look here