3

基本的に、プレイヤー(または敵)が死ぬたびに爆発gifを再生したいゲームがありますが、gifを1回だけ再生したいです。私はすべてをクラスに設定し、必要なときに爆発を追加するArrayListを持っています。現在、gifの期間に達すると爆発を削除するように設定しています(System.currentTimeMillis()を使用) 。唯一の問題は、それが正確ではないことです。gifが早く停止して消えたり、ロールオーバーしたりすることもあります。どちらの状況でも、次の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;
    }
4

1 に答える 1

6

これに対する通常の解決策は、gifを使用しないことです:)

ほとんどのゲームは、gifレンダリングを機能させるのではなく、gifの各「フレーム」を個別に保存し、順番に表示します。

System.currentTimeMillis()はそれほど正確ではありません。さらに、描画関数の呼び出しの間にバックグラウンドで大量の処理が行われる可能性があるため(すべてフレームレートに影響します)、一般的にはそれに依存しないことをお勧めします。

于 2013-01-29T21:27:22.043 に答える