Gif Image只播放一次。每次都需要重播

时间:2014-11-10 20:09:29

标签: java image draw reload gif

我不想在这里发布整个程序,因为那会太多,但我会发布它的片段并详细说明它们来自哪里,所以你有一个想法。

问题:对于我的班级项目,我正在制作一个典型的太空入侵者游戏。当导弹击中一艘船时,会播放爆炸gif。 gif只循环一次(不连续)。当导弹击中外星飞船时,gif对第一艘宇宙飞船起到了不错的作用。但是,当我在第二或第三等地射击导弹时,gif不会再发射。我相信它只是从我研究的内容中播放gif的最后一帧。有没有办法在每次导弹击中时重新加载gif图像,还是有其他方法可以做到这一点?

以下是图片的链接:http://postimg.org/image/v2lljr7cb/

以下是一些代码:

我有一个名为Boom的课程,爆炸正在发生。这是该类中的代码:

public void draw(Graphics2D g2d) {
    g2d.drawImage(getEnemyImg(), x, y, null);
}

public Image getEnemyImg() {
    ImageIcon ic = new ImageIcon("src/Boom.gif");
    return ic.getImage();
}

然后我有另一个名为GameFrame的类,其中一切都发生了。在其中,有这些代码专门用于爆炸。以下是此类的代码:

static ArrayList<Boom> booms = new ArrayList<Boom>();

public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;
    ImageIcon ic = new ImageIcon("src/BackGround.jpg");
    g2d.drawImage(ic.getImage(), 0, 0, null);
    player.draw(g2d);

    for (int i = 0; i < booms.size(); i++) {
        Boom bm = booms.get(i);
        bm.draw(g2d);
    }

    Enemy e = new Enemy(200, 400);
}

@Override
public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub
    player.update();

    for (int i = 0; i < booms.size(); i++) {
        Boom bm = booms.get(i);
        bm.update();
    }

    checkEnd();

    repaint();

}

public static void addBoom(Boom bm){

    booms.add(bm);
}

public static void removeBoom(Boom bm) {
    booms.remove(bm);
}

public static ArrayList<Boom> getBoomList() {
    return booms;
}

最后,这里是添加爆炸的地方。当导弹击中外星飞船时会发生这种情况。这发生在敌人类中。这是代码:

public void checkCollisions() {
    for (int i = 0; i < GameFrame.getMissileList().size(); i++) {
        Missile m = GameFrame.getMissileList().get(i);
        if (getBounds().intersects(m.getBounds())) {
            GameFrame.removeEnemy(this);
            GameFrame.removeMissile(m);
            GameFrame.addBoom(new Boom(m.getX() -40, m.getY()- 60));
            for(int j = 0; i <GameFrame.getBoomList().size(); i++){
                Boom bm = GameFrame.getBoomList().get(j);
            }               
        }
    }
}

我为文字墙道歉。我的教授不确定如何做到这一点,所以我希望从这里得到一些帮助。

如果您有空余时间,您的想法会有所帮助。谢谢。

0 个答案:

没有答案