1
2
也应该存在一个keyup事件,通过同时使用keydown和keyup,您可以实现所需的效果。有几种方法可以做到。 一种方法是让keydown事件启动一个重复动作,然后让keydup取消它。 另一个方法是存储某些密钥是否被按住。保留一个关键点列表,并在关键点向下时将其打开,在关键点向上时将其关闭。在游戏主循环中,您将触发与当前关闭的所有键对应的事件。 一个例子:
然后,在主循环中执行“heldown”,并为被按住的每个有意义的键触发事件:
|
2
3
你依靠自动重复键来保持工件移动。这不合适,用户的键盘重复延迟是可变的,会影响游戏的可玩性。当你发现,当按下另一个键时,它停止自动重复。 通过将每个游戏对象设置为运动状态来解决此问题。使用keydown事件更改它。如果运动状态值仍然与关键点匹配,则返回keyup事件以重置它。在游戏循环中,根据运动状态更新游戏对象的位置。你会以固定的速度,由计时器触发。 运动状态也应显示“坠落”。你现在可以简单地使游戏更困难,随着水平的进展,通过减少计时器的速度。碎片落得更快。而且键盘的响应能力更强,用户仍有机会赢得一个级别。 |
3
1
Windows将只对您按下的最后一个键重复事件。此外,首先重复按键之前的延迟,以及重复按键的速率,取决于通常为键入而不是为游戏而优化的设置。因此,对于游戏来说,最好完全忽略它们,并有自己的方法来实现“重复”键。
基本上,你必须保持你感兴趣的键的状态(按下或释放),并在收到keydown或keydup事件时更改它们。然后,在某种计时器中,您将必须检查状态,并为在该时刻关闭的每个键触发事件。如果计时器发生在控制器层或ui中,则取决于您的体系结构
您可以添加额外的检查,比如当左键和右键同时按下时忽略这两个键,否则工件将重复地向左和向右跳跃。 |
4
1
你需要国家。创建一些变量,如“rightarrowpressed”和“rotatebuttonpressed” 在key_down中,检查按键是否按下,如果按下,则将相应的变量设置为true。 在key_up中,执行相同操作,但将其设置为false。 现在,在任何一点上,您都可以查看这两个变量,并查看按下了哪些键。 |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |