gpt4 book ai didi

javascript - 检测 setInterval 计时器是否在 javascript 中完成

转载 作者:行者123 更新时间:2023-11-30 18:22:57 24 4
gpt4 key购买 nike

我正在尝试使用 Javascipt 构建一个 HTML5 贪吃蛇游戏。我有一个主要问题有待解决,经过数小时的思考仍无法解决。

这与 setInterval 和箭头键按下时的蛇形移动有关。当快速按下箭头键时..几乎就像按下多个键一样游戏结束(这意味着在蛇跑过自己时结束)

问题解释的工作模型:http://jsfiddle.net/MgsZp/29/

情况:蛇向下移动,当我按下左箭头然后快速向上箭头时,蛇会越过自身(只向上移动),因为左箭头的时间间隔立即被清除。相反,它应该向左移动然后向上移动。

在这种情况下,我试图将按下的箭头键存储在数组中,但无法处理。

例子:

var arrowArray = [] ;/* 存储按下的箭头键 */

//按 setInterval(move_snake, timer) 方向存储在 arrowArray[0] 中

//arrowArray.shift() 删除蛇移动的当前方向并为 arrowArray[0] 中的下一个方向让路

现在,当快速按下箭头键时,我如何等到蛇向一个方向移动,然后再向第二个方向移动。尝试在 setTimeout 中使用 setInterval 等待计时器结束,但没有成功。

帮助?

最佳答案

这里有一个想法:与其使用箭头键清除间隔并重新开始,不如让箭头键改变蛇在下一帧的前进方向。这避免了每当我改变蛇的方向时看到的小延迟。箭头键应该只是设置下一个移动方向。然后当间隔函数再次运行时,它检查下一个方向是否有效。这解决了蛇试图朝相反方向移动的问题。

关于javascript - 检测 setInterval 计时器是否在 javascript 中完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com