如何查询Paper.js中精确选择的项目?

时间:2018-10-28 13:09:56

标签: paperjs

根据我的理解,project.getItems({selected: true})返回错误结果:我选择一条曲线,它返回了父路径:Sketch

尝试单击曲线或线段。整个路径将被移动。然后尝试通过将var workaround = false设置为var workaround = true来更改行为,以观察所需的行为。

我如何才能准确地选择真正的东西?

当前解决方法

我目前正在将这些对象添加到选定的数组中,并使用这些项目代替project.getItems({selected: true})

1 个答案:

答案 0 :(得分:1)

问题是,在Paper.js体系结构中,curvessegments不是items(它们是特定item的一部分,path是{{ 1}})。因此,您不应该期望project.getItems()返回除items以外的任何值。

您必须知道的另一件事是,如果选择了路径的任何部分(curvessegmentspointshandles,{{ 1}},position,...)。如果选择了曲线的所有部分(boundspoints),则假定该曲线已选择。

请牢记这一点,您可以基于第一部分handles创建一种算法来检索“真正选择的内容”。然后,您需要遍历project.getItems({selected: true})curves来检查它们是否被选中。

这是sketch,展示了可能的解决方案。

segments

也就是说,根据您的实际用例,您当前的解决方法可能比这种方法更合适。