无限运行游戏

时间:2016-03-10 17:07:35

标签: java

我正在尝试按照YouTube Guide制作一个小型的二维java游戏。

我不是100%跟随它,而是按照这些方式排序。当我尝试运行我的程序时,它无限打开并且不会停止打开。我把它变成了一个线程(??)并添加了启动和停止但它似乎不起作用。有什么想法吗?

public class game implements Runnable {

private Thread thread;
private boolean running = false;
private BufferStrategy bs;
private Graphics g;

public game(){

}

private void init(){
    new frame();
}

private void update(){

}

private void render(){
    frame frame = new frame();
    bs = frame.getCanvas().getBufferStrategy();
    if (bs == null){
        frame.getCanvas().createBufferStrategy(3);
        return;
    }
    g = bs.getDrawGraphics();
}

public void run() {
    init();
    while(running){
        update();
        render();
    }
    stop();
}

public synchronized void start(){
    if(running)
        return;
    running = true;
    thread = new Thread(this);
    thread.start();
}

public synchronized void stop(){
    if(!running)
        return;
    running = false;
    try {
        thread.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

它会像这样运行Launcher类。

public static void main(String[] args) {
    game game = new game();
    game.start();
}

如果需要,我可以使用完整的代码。我试过询问创作者并查看他的源代码,但一切似乎都是相同的(除了我改变我的游戏时显示的偏差。)

TL:DR游戏打开无限帧并最终崩溃。

1 个答案:

答案 0 :(得分:0)

必须使getCanvas()方法保持静态并且工作正常。简单。