【问题标题】:How can I execute some code 1 time when space bar is pressed and keeps being pressed in javajava - 当空格键被按下并在java中一直被按下时,我如何执行一些代码1次
【发布时间】:2012-12-15 23:22:30
【问题描述】:

我一直在研究我的比赛,现在,我的球员需要投篮。他确实射击,但为了减少弹药,只要我按住空格键,它就会不断减少。我想知道一个代码,它可以让我在每次按下空格键时移除 -1 弹药,即使它仍然被按下。谢谢,希望您尽快回复我!

【问题讨论】:

  • 显示您尝试过的一些代码,这将有助于我们为您提供正确的方向。

标签: java


【解决方案1】:

在按键按下时,初始化并启动 java.util.Timer,初始延迟为 0 和延迟 X(无论您想要触发的频率如何。

在按键上,停止计时器。

【讨论】:

  • +1,虽然我建议使用java.swing.Timer 代替(假设涉及某种绘画——这可能是 OP 的情况)。当涉及到与 Swing 相关的业务时,通常首选使用 java.swing.Timer 而不是 java.util.Timer。编辑:另一方面,由于 OP 可能会在 KeyListener 中使用计时器,因此已经在 EDT 上执行,因此使用 java.util.Timer 可能就足够了。
  • @Priidu:没有。 java.util.Timer 的全部意义在于在延迟一段时间后在另一个线程中执行某些操作。因此,如果执行的操作必须在 EDT 上,则需要使用 Swing 计时器。
  • 我默认关闭 EDT,视图无效并重新绘制。但我从来都不是游戏开发者。无论如何,如果你想继续在 EDT 上工作,我同意 @Priidu。
  • 我真的不知道该怎么做。如果你知道怎么做,请告诉我。顺便说一句,谢谢!
  • 查看@aioobe 在stackoverflow.com/questions/5199581/… 上的回答(永远不要停止思考那个EDT。)
猜你喜欢
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 2021-05-17
相关资源
最近更新 更多