我正在尝试按照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游戏打开无限帧并最终崩溃。
答案 0 :(得分:0)
必须使getCanvas()方法保持静态并且工作正常。简单。