JavaScript / HTML5 Canvas寻路多路复用问题

时间:2013-01-08 01:07:26

标签: javascript html5 artificial-intelligence path-finding

我在JavaScript for HTML5 canvas中有一个寻路脚本,似乎有多路复用的问题。

jsFiddle Demo

脚本已被采用并略微改编自此处接受的SO答案:A* Start path finding in HTML5 Canvas(也有相同的错误)。

如何复制问题:只需在红色方块运动时快速点击地图,您就会看到正方形分裂或分支到每个不同的路径中

我认为正在发生的事情是,你应该注意到红色正方形在分支过程中开始闪烁,它实际上只是同一个正方形试图同时在多个地方,导致相同的正方形到& #34;传送术"来回交替帧中的帧速率来回。这只是一个理论,但我认为它实际上产生了更多的方块。

我不确定它是否与movePlayer()函数或pathFinding()函数有关。我想我需要做的是,如果对象正在移动并且目标图块被更新,则取消之前的任何操作而不是继续同时运行它们 - 我不知道我将如何做到这一点。

由于这最终会成为敌人的AI脚本,因此当玩家在地图上移动时,目标图块将始终实时更新,这可能会导致此问题浮出水面。

谢谢,我感谢您在调试时提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

据我所知,问题在于使用定时器。当您单击时,它会计算当前位置与您单击的位置之间的路径,然后启动一个计时器,使该方块沿该路径移动,并在本地存储该计时器的信息。再次单击时,它会启动另一个计时器而不清除旧计时器,因此它现在同时从两个不同的计时器沿两条路径移动。它正在绘制每个计时器中的每个动作,这可以看作是闪烁。