首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的动力js碰撞/交叉阿尔格。太慢了

为什么我的动力js碰撞/交叉阿尔格。太慢了
EN

Stack Overflow用户
提问于 2013-07-08 15:57:48
回答 1查看 960关注 0票数 0

对不起我的英语不好!

我有两个关于动力学JS和交叉口的问题。

  1. 正如您在我的代码示例中所看到的,即使在10个节点上,交汇方法也非常慢。为什么会这样呢? http://jsfiddle.net/Maj0rrush/YWGzE/8/
  2. 在交叉路口,我需要销毁两个节点,但是第84行和第85行会抛出一个错误! 0x800a138f - Laufzeitfehler in JavaScript: Die Eigenschaft "hitCanvas" eines undefinierten oder Nullverweises kann nicht abgerufen werden.
EN

回答 1

Stack Overflow用户

发布于 2013-07-08 17:55:51

  1. 直接取自KineticJS文档: intersects(point)确定点是否在形状中,而不管其他形状是否在其顶部。注意:由于此方法清除临时画布,然后重新绘制形状,因此如果连续多次执行,它的性能非常差。如果可能的话,请使用Kinetic.Stage#getIntersection方法,因为它的性能要好得多

话虽如此,在双for each循环中每100 is调用一次intersects(pos),会对性能O(n^2)产生很大的影响。慢度将随着您拥有的对象的增加而成倍增加,因此10个节点已经在减慢您的应用程序!

您最好在这里创建自己的碰撞检测算法,以提高碰撞检测的性能,因为看起来您需要经常检测碰撞(在本例中,每100 in)。因为你正在检测圆点(圆圈)之间的碰撞,所以我建议研究一下圆周碰撞算法。查看此站点以获得更多信息:http://www.gamefromscratch.com/post/2012/12/12/GameDev-math-recipes-Collision-detection-using-bounding-circles.aspx

  1. 因为intersects(pos)方法需要一个{x: newX, y: newY}形式的point对象,所以您得到了这个错误,所以传递的内容是错误的。 这是错误的:intersects(newX, newY) 这是对的:intersects({x:newX, y:newY})
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17531024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档