由于没有明显原因,以下代码"停止"打印出Will be drawing.
private void drawMaps() {
System.out.println("Will be drawing...");
bs = display.getCanvas().getBufferStrategy();
if(bs == null){
display.getCanvas().createBufferStrategy(3);
return;
}
g = bs.getDrawGraphics();
//Clear Screens
g.clearRect(0, 0, 1000, 725);
//Draw Here!
System.out.println("Should be drawing");
for(int i=0; i<toPlay.islands().size(); i++) {
System.out.println("We're at island " + i);
int x = 0, y = 0;
if(i==0) {
x=50;
y=10;
}
Color toDraw = toPlay.islands().get(0).getTeam().getColor().getColor();
g.setColor(toDraw);
g.fillRect(x, y, 50, 50);
}
//End Drawing!
bs.show();
g.dispose();
}
我在控制台中得到的是Will be drawing
,然后我的JFrame上没有任何内容。我不知道为什么这样做不起作用,因为这在以前不同的课程中有效。
答案 0 :(得分:0)
显然你的代码确实在这里返回
if(bs == null){
display.getCanvas().createBufferStrategy(3);
return; // return!
}
再解释一下:
看起来您正在尝试使用“常用技术”在java awt中渲染画布,因此您需要在一个循环中运行drawMaps
,并且在运行它时第一次 - 缓冲策略尚未初始化,因此您运行该策略的初始化,并在下一次调用时它将准备好,以便您的代码将更进一步。在某个地方你需要像
while (running)
{
...
drawMaps();
..
}