反应蛇游戏-蛇不移动(setInterval问题)



你可以从这里检查应用程序;沙箱

蛇的运动逻辑基本上是从它的背部移走一个正方形,并添加一个新的头部。这创造了一种移动的外观。但是我的间隔好像不能正常工作。

它只工作一次,然后它会一遍又一遍地做同样的事情。这意味着状态在一段时间后根本不会改变。

我在一个视频中看到有人用这种方式开发游戏,但它确实有效。我看不出这段代码有什么问题,提前谢谢。

你可以同时使用useEffectsetTimeout来设置一个新的超时,每次蛇点在状态下被更新。例如:

useEffect(() => {
setTimeout(moveSnake, 1000);
}, [snakeDots]);

我看到你的问题了。那真的很有趣。问题是这个。

useEffect(() => {
setInterval(moveSnake, 1000);
}, []);

setInterval(moveSnake, 1000)。这是使用原点moveSnake。由于功能组件覆盖了整个状态和功能,moveSnake发生了变化。我认为指向数组的指针改变了。由于它使用的是原点指针,setInterval不能改变状态。我认为你可以更新如下。

useEffect(() => {
setTimeOut(moveSnake, 1000);
}, [snakeDots]);

最新更新