【发布时间】:2019-03-14 10:41:26
【问题描述】:
我正在编写 Snake 游戏应用程序以进行练习。
我有一个 changeDirection 函数,它根据箭头单击将适当的方向设置为状态:
changeDirection = event => {
const { direction } = this.state;
const keyPressed = event.keyCode;
if (keyPressed === keyCodes.LEFT_KEY && direction !== "right") {
this.setState({ direction: "left" });
}
if (keyPressed === keyCodes.UP_KEY && direction !== "down") {
this.setState({ direction: "up" });
}
if (keyPressed === keyCodes.RIGHT_KEY && direction !== "left") {
this.setState({ direction: "right" });
}
if (keyPressed === keyCodes.DOWN_KEY && direction !== "up") {
this.setState({ direction: "down" });
}
}
它工作正常,但问题出在另一个函数中。 我正在根据方向状态更新蛇的头部位置。并且此函数每 1 秒执行一次(使用 setInterval),当方向改变时,蛇的头部不会立即改变方向。它会在下一步行动。
我知道这是因为蛇第一次移动时新的方向状态尚未设置,但我不知道如何解决这个问题。
【问题讨论】:
-
请包含所有相关代码。无法说出您问题中当前的代码可能有什么问题。
-
我已经在原帖中添加了repo链接。
标签: reactjs asynchronous setstate