如何从我的线程倒计时时间类获取更新变量

时间:2014-04-20 18:24:00

标签: java android multithreading libgdx

您好我一直试图为我的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 

1 个答案:

答案 0 :(得分:1)

您的代码执行两个new timekeep()表达式,因此创建了两个对象。您需要重新编码,以便只创建一个timekeep对象。 E.g。

timekeep theTimeKeeper = new timekeep() ;
Thread t1 = new Thread(theTimeKeeper));
t1.start() ;
... 
System.out.println(theTimeKeeper.gettime());