多个对象不呈现

时间:2017-01-01 20:48:40

标签: java graphics2d

我正在制作一个将对象渲染到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的抽象类。希望这是有道理的。

1 个答案:

答案 0 :(得分:1)

您在绘制一个项目后重新{{}}图形对象,然后尝试用它绘制另一个项目。