2017-09-27 5 views
1

私はJavaでコードを書くことを学んでいて、最近私の割り当てに従ってゲームを書き始めました。 私はほとんどゲーム全体を完了しましたが、ゲームのアニメーション部分にこだわりました。ここ は、私がこれまでにやっていることである、bufferedimageを使用して画像を再ペイントする

これは、次のコードは、メインクラス(Main.java)

private Graphics cGraphcs; 
cGraphcs.drawImage(dpmImageInstance.dpm1ImageGet(), 0, 0, null); 
からである

public class dpmImage { 
    private BufferedImage dpm1; 
    private BufferedImage setDpm1; 


    public dpmImage() { //this is a constructor 
     try { 
      dpm1= ImageIO.read(new File("dpm1Load.png")); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     setDpm1 = dpm1; 
    } 

    private BufferedImage dpm1ImageGet() { 
     return setDpm1; 
    } 

} 

、画像TIの表示をロードするクラスです。

コードが正常に動作し、画像が表示されます。 今、私はdpmImageクラスの何かを変更することができますが、Main.javaの何かを変更することはできず、このイメージをアニメーション化します。だから私はdpmImageクラスでBufferedImageの配列を作成し、以下のように配列内の第2の画像を追加し、

public class dpmImage { 
    private BufferedImage [] dpm1 = new BufferedImage[2]; 
    private BufferedImage setDpm1; 


    public dpmImage() { //this is a constructor 
     try { 
      dpm1[0]= ImageIO.read(new File("dpm1Load.png")); 
      dpm1[1]= ImageIO.read(new File("dpm1Load1.png")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     setDpm1 = dpm1[0]; 
     setDpm1 = dpm1[1]; 
    } 

    private BufferedImage dpm1ImageGet() { 
     return setDpm1; 
    } 

} 

しかし、私は、第二に最初のイメージから、それをアニメーション化することができませんでした。誰かが私にそれについて何か示唆を与えることができますか? Main.javaクラスを変更することはできません

+0

さて、あなたは配列を持っていますが、 'setDpm1'を2回起動し、' dpm1 [1] 'で初期化します。あなたは何かに基づいて 'dpm1 [0]'か 'dpm1 [1]'のどちらかを返すことができます。 – AxelH

答えて

0

あなたはいつも同じBufferedImagedpm1ImageGetメソッドから返します。配列からインスタンスを取得する必要があります。更新の頻度に基づいて、単に

のようなインデックスを使用することができます
private int indexImage = 0; 

private BufferedImage dpm1ImageGet() { 
    indexImage = (indexImage + 1) % dpm1.length; //increment and use % to prevent any ArrayOutOfBoundsException 
    return dpm1[indexImage]; 
} 

各呼び出しは次の画像を返します。もちろん、これはいつ他のイメージを取得したいかによって決まります。それは何でもかまいません。

関連する問題