好吧,KineticJS 有几个交集函数:
intersects(point)
动力学.形状#intersects
getAllIntersections(pos)
Kinetic.Container#getAllIntersections
getIntersection(pos)
Kinetic.Stage#getIntersection
虽然getAllIntersections
可能是您需要的功能,但看起来 KineticJS 的作者强烈建议使用getIntersection
IF possible over getAllIntersections
。这是因为getAllIntersections
连续多次调用时性能很差,这可能对您来说是个问题。
以我的经验,getIntersection
只检索 1 个与该点相交的对象,并且它似乎只返回添加到舞台的最新对象,该对象与该点相交!我不确定您将如何在您的情况下使用它。
用户 EliteOctagon 编写了自己的碰撞检测函数,取得了更好的成功(和更好的性能!):HTML5 / kineticJS getIntersection 函数实现这可能是你最好的选择。祝你好运!
哦,还有一个关于性能的小技巧:如果您尝试选择形状而不仅仅是“矩形”,如果您将所有可选择的形状命名为相同的名称,并.get()
在名称上使用函数而不是仅使用.get("Rect")
.
例如:
new Kinetic.Rect({
name: "selectableShape"
});
new Kinetic.Ellipse({
name: "selectableShape"
});
var selectableShapes = stage.get(".selectableShape");