reactjs - 如何修复反应蛇游戏中的setState异步错误
问题描述
我建立了一个反应蛇游戏,我发现了一个错误。当我用 移动蛇时onkeydown()
,在某些情况下,我会得到一个不应该发生的错误。
当蛇的长度大于 2 并且用户单击箭头键,然后非常快速地单击与原始方向相关的相反键时,就会发生这种情况。
例如:用户向左移动然后单击--> 向下--> 向右。蛇应该像快速“掉头”一样移动,而不是向右移动(跳过键)。又因为蛇的方向是向左,所以右边是蛇身。因此,游戏没有掉头,而是因为蛇自己相撞而失败。
我想提一下,我使用 if 语句 (in ChangeDirection()
) 来避免当蛇的方向向左时,它立即向右移动,以避免蛇自己碰撞。但在这种情况下,用户通过快速向下单击 --> 右来覆盖此限制。
为什么会发生这种情况?这是因为 setState 是异步函数吗?我怎么解决这个问题?
你可以在这里看到这个项目:
解决方案
推荐阅读
- javascript - 如何在谷歌云功能中从快照创建磁盘-node js
- stata - “margins, predict”和“margins, predict at mean”之间的区别
- html - 响应地调整文本大小,使其显示在同一行
- keras - Keras imdb 情感模型 - 如何预测新句子的情感?
- python-3.x - 如何在 python 中捕获导致 SSL certificate_verify_failed 的 url?
- java - JAVA GUI 标签输出错误
- java - 如何在 Jsoup 中处理 URL 编码字符
- iis - 在 Windows 上使用 IIS 和 Zend Server 时 Microsoft fastCGI 与 Zend fastCGI
- asp.net-mvc - dotnet web api 2中的Ninject依赖注入
- cmd - 启动“runas”时,“尝试启动 (cmd)”是否可以被抑制、隐藏或以其他方式压扁?