PaperJS SymbolItems 在命中结果搜索后丢失属性

PaperJS SymbolItems lose properties after hit result search

我正在为一个圆创建一个 SymbolDefinition,并使用 new SymbolItem(definition) 将其放置在 canvas 上。用于创建定义的圆形对象具有默认位置 (0,0)、默认颜色,并且没有其他信息,因为默认纸张设置。

当我实例化符号并将其放置在某个位置时(例如 (20,30)),我还会在其数据中附加一些其他信息,例如名称、一些补充信息 属性,等

如果我点击放置的圆圈,并使用project#hitResultAll对该项目进行回调搜索,则命中结果中包含的项目不再具有上述任何信息。事实上,它似乎是用于创建定义的原始圆形对象;它的位置实际上是(0,0),它没有名字,数据属性是空的。

这是一个 jsFiddle with an example(打开开发控制台以查看输出)。

如果 link 不起作用,这里是示例代码:

var canvas = paper.createCanvas(100, 100);
document.getElementById("canvasDiv").appendChild(canvas);
paper.setup(canvas);

var circle = paper.Path.Circle([0,0], 10);
circle.fillColor = 'red';

var definition = new paper.SymbolDefinition(circle);

var tool = new paper.Tool();
tool.onMouseUp = function(event){
  var hitResult = paper.project.hitTestAll(event.point);
  if(hitResult.length > 0){
    var result = hitResult[0];
    var item = result.item;
    console.log("Item name should be 'Bob', but is actually " + item.name);
    // Output is: Item name should be 'Bob', but is actually null
  }
};

var actualCircle = new paper.SymbolItem(definition);
actualCircle.position = [20,30];
actualCircle.name = 'Bob';
console.log("Symbol Item was created with the name " + actualCircle.name);
// Output is: Symbol Item was created with the name Bob

有谁知道为什么会这样,我该如何解决?

原来是paperJS命中测试代码的bug。感谢Lehni,这个问题已经解决了。截至发稿时post,尚未部署新版本,但只要您使用 0.10.2 以上的任何版本,就应该是安全的。

根据 Lehni 的说法,如果您受困于旧版本:

If you use hitTest() instead of hitTestAll(), it returns the expected result.