您好我一直试图为我的libgdx游戏制作一个简单的10秒倒数计时器,但我一直遇到问题。我现在在一个实现runnable的单独类中运行倒计时器。这个类工作得很好,它按计划倒计时,我在这个线程中运行了一个system.out.println来验证它是否正常工作。问题是在我的主游戏屏幕上打印/绘制这个计时器变量。
如果我尝试从我的游戏画面打印这个变量,我会得到它的起始变量,即10而不是不断更新的变量(从10倒数)。我甚至使用了一种仍然没有运气的getter方法。任何想法如何实现这一目标?感谢
我假设这是因为Thread与主游戏并行运行?
public class timekeep implements Runnable {
public Boolean TimerRunning=true;
private int Timer = 10; //need to print this from my main game screen as it changes
public void run() {
while(TimerRunning == true) {
System.out.println("Time left "+ Timer);//works perfectly prints countdown
//run code
//subtracts 1 from Timer every second
}
}
public int gettime(){
return Timer;//returns timer
}
}
....
//accessing Timer variable from main game
System.out.println(Timekeep.gettime());//prints 10 all the time in the main screen
答案 0 :(得分:1)
您的代码执行两个new timekeep()
表达式,因此创建了两个对象。您需要重新编码,以便只创建一个timekeep
对象。 E.g。
timekeep theTimeKeeper = new timekeep() ;
Thread t1 = new Thread(theTimeKeeper));
t1.start() ;
...
System.out.println(theTimeKeeper.gettime());