我正在制作一个将对象渲染到JPanel上的太空游戏。 这些对象的render方法在我的Space类中调用。
我有2个对象,alienShip和myShip以及各自的类。每个类都有一个render方法。我无法让两艘船同时渲染到我的JPanel上,它可能是其中之一。我只看到首先调用.render(g2)方法的对象。
SPACE CLASS:
spaceImage=new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
foregroundImage=new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
//create the space Image background and instantiate ships (myShip, alienShip)
//Below render() method is called in my Game class using a standard game loop with
update method and rendor method.
public void render(Graphics2D g) {
Graphics2D g2=(Graphics2D) foregroundImage.getGraphics();
g2.drawImage(spaceImage, 0, 0, null);
myShip.render(g2); <---alienShip does not appear, only myShip.
alienShip.render(g2); <---If I swap these 2 commands, then alienShip appears,
and myShip does not
g.drawImage(foregroundImage, x, x, null);
}
ALIENSHIP AND MYSHIP CLASS:
public void render(Graphics2D g) {
g.drawImage(shipImage, x, y, null);
g.dispose();
}
我尝试创建一个Drawable接口,并遍历调用DrawableObject.render(g2)的所有可绘制对象,但不修复它。此外,我有子弹与myShip同时进行渲染。
myShip和alienShip确实扩展了一个名为Ship的抽象类。希望这是有道理的。
答案 0 :(得分:1)
您在绘制一个项目后重新{{}}图形对象,然后尝试用它绘制另一个项目。