根据我的理解,project.getItems({selected: true})
返回错误结果:我选择一条曲线,它返回了父路径:Sketch
尝试单击曲线或线段。整个路径将被移动。然后尝试通过将var workaround = false
设置为var workaround = true
来更改行为,以观察所需的行为。
我如何才能准确地选择真正的东西?
我目前正在将这些对象添加到选定的数组中,并使用这些项目代替project.getItems({selected: true})
。
答案 0 :(得分:1)
问题是,在Paper.js
体系结构中,curves和segments不是items(它们是特定item
的一部分,path
是{{ 1}})。因此,您不应该期望project.getItems()返回除items
以外的任何值。
您必须知道的另一件事是,如果选择了路径的任何部分(curves
,segments
,points
,handles
,{{ 1}},position
,...)。如果选择了曲线的所有部分(bounds
和points
),则假定该曲线已选择。
请牢记这一点,您可以基于第一部分handles
创建一种算法来检索“真正选择的内容”。然后,您需要遍历project.getItems({selected: true})
和curves
来检查它们是否被选中。
这是sketch,展示了可能的解决方案。
segments
也就是说,根据您的实际用例,您当前的解决方法可能比这种方法更合适。