我正在开发一个小型街机视频游戏,我希望使用双缓冲来改进动画。我有一个类应该绘制空白图像,另一个类应该绘制一条简单的线条。但是,我不断在应该绘制线条的线条上收到 NullPointerException
class Render extends JPanel {
public int dbWidth = 500, dbHeight = 400;
public Image dbImage = null;
public Graphics dbg;
public void gameRender() {
if( dbImage == null )
dbImage = createImage( dbWidth, dbHeight );
dbg = dbImage.getGraphics();
dbg.setColor( Color.white );
dbg.fillRect( 0, 0, dbWidth, dbHeight );
}
}
class MC extends Render {
public Render render = new Render();
public void draw() {
render.gameRender();
dbg.drawLine( 100, 100, 200, 200 ); // line where NullPointerException occurs
}
}
我认为 Graphics 变量 dbg 为空,但它的值是dbImage.getGraphics();
in gameRender();
我该如何修复这个 NullPointerException?
我还在另一个类中调用draw()方法,如下所示
public void run() {
running = true;
while( running ) {
mc.draw();
try {
Thread.sleep( 50 );
}
catch( Exception e ) {}
}
}
我在该类的构造函数中说过 mc = new MC();
你正在呼唤dbg
on the this
实例,而不是实例render
.
你需要将其更改为
render.dbg.drawLine(....)
或者,如果您想离开dbg
调用相同的,你可以调用
this.gameRender();
首先然后调用
dbg.drawLine(...);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)