【问题标题】:How do I increment a variable every second?如何每秒增加一个变量?
【发布时间】:2015-05-20 20:37:57
【问题描述】:

我正在制作一个类似于游戏的 cookie 点击器。我坚持的是增加一个我将每秒使用的变量。这个变量将是我游戏的货币。

我将通过两种方式获得这种货币

  1. 点击图片

  2. 让游戏运行

我能够完成第一种方法,但我坚持的是第二种方法,我需要让变量每 1 秒增加一次。我还需要每次点击按钮时不断更新货币的计数器。

我尝试的是 sleep 方法,但这会在用户单击按钮时阻止程序更新。我必须使用超过 1 个线程来完成此操作吗?

我们将不胜感激。

【问题讨论】:

  • 定时器是为这类事情设计的。见docs.oracle.com/javase/tutorial/uiswing/misc/timer.html
  • 您使用的是哪个 GUI?
  • 我正在使用 JCreator Java 小程序。应该有问题吗?
  • 我的意思是,你在使用 AWT、Swing、JavaFX...吗?
  • 如果你想自己做java.util.concurrent.atomic.AtomicInteger可能对柜台有用。

标签: java multithreading loops time applet


【解决方案1】:

正如有人建议使用计时器, 然后你需要一个单独的线程来更新 seconds / gui,因为你不希望你的主线程卡住。

  1. 按钮被按下

  2. 这样的东西可能适合你吗?

void OnButtonPress(){
Thread t = new Thread(
new Runnable(){
    @Override
    void run(){
    //timer tics here
    }
  });
}

不要忘记在适当的地方启动线程 编码愉快!

【讨论】:

  • 我有一个问题,所以如果我想要方法OnButtonPress(),那么当它达到某个要求时,我可以调用OnButtonPress(),然后它会创建一个新线程并执行它自己的东西?
  • 是的,当然,但是为了清楚你不需要方法,你可以在任何地方启动一个新线程,当调用 t.start() 时,线程 runnables run() 方法将叫做。您已经达到了需要两件事同时发生两件事的地步,因此您需要两个线程,每个线程彼此独立。注意 run() 方法将在 start() 上调用一次,所以你需要一个循环,
猜你喜欢
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 2017-10-09
  • 2021-09-24
  • 2015-09-13
相关资源
最近更新 更多