如何使gif运行一次并停止在Java中?

时间:2013-01-29 21:23:14

标签: java swing animation awt gif

基本上我有一个游戏,我想在玩家(或敌人)死亡时玩爆炸gif,但我希望gif只玩一次。 我已经在一个类中设置了所有内容,并且我有一个ArrayList,当我需要它时会添加爆炸,并且我目前已经将它设置为在达到gif的持续时间后将其删除(使用System.currentTimeMillis()) 。唯一的问题是它不准确,有时gif提前停止并消失,有时它会翻身,这两种情况都会导致下一个从另一个停止的地方开始。 是否有某种方法,类,某种类型的监听器,或者我可以使用什么来告诉我的gif是什么帧,或循环多少次?我的代码可以完成其余的工作,我只需要更好的东西放入我的if语句中:

g2D.drawImage(explosion, x - 150, y - 150, null);
    if(System.currentTimeMillis() - startingTime > 520){
        System.out.println(System.currentTimeMillis());//for testing accuracy
        Game.explosions.remove(this);
        explosion = null;
    }

1 个答案:

答案 0 :(得分:6)

通常的解决方法是不使用gif:)

大多数游戏将分别存储gif的每个“框架”,并按顺序显示它们,而不是试图让gif渲染工作。

System.currentTimeMillis()并不是非常准确,而且在调用draw函数之间可能会有大量的事情发生(所有这些都会影响帧速率)所以我建议不要依赖它。