1

我有一个用于 HTML5 画布的 JavaScript 中的寻路脚本,似乎存在多路复用问题。

jsFiddle 演示

该脚本已从此处接受的 SO 答案中提取并稍作修改:A* Start pathfinding in HTML5 Canvas(也有相同的错误)。

如何复制问题:当红色方块在移动时,只需在地图上快速单击,您就会看到方块似乎分裂或分支到每条不同的路径。

我认为正在发生的事情是,你应该注意到红色方块在分支过程中开始闪烁,实际上只是同一个方块试图同时在多个地方,导致同一个方块来回“传送”交替帧中的帧速率。虽然这只是一个理论,但我认为它实际上并没有产生更多的方块。

我不确定它是否与movePlayer()功能或pathFinding()功能有关。我认为我需要做的是,如果对象正在移动并且目标图块已更新,请取消任何先前的操作,而不是继续同时运行它们 - 我不知道我会如何做到这一点。

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

谢谢,我很感激调试这个的任何帮助!

4

1 回答 1

1

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

于 2013-01-08T01:38:32.530 回答