■キャラクタのアニメーション処理 |
|
ここでは、Javaゲーム−>インベーダのプログラム説明の部分で説明したキャラクタ表示を一歩進めて、PackManを例にとって、キャラの向きによるアニメーション切り替えの方法を説明します。ここで行っている処理は、方向とアニメーションイメージのこま数で2次元配列とした方法です。 |
↑元ネタファイルはこちら |
STEP.1 イメージ領域を準備します。 方法はインベータと同じですが、イメージ領域を2次元配列で取得しています。
|
|||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||
STEP.2 用意したイメージ領域にイメージファイルを読み込みます。 インベーダと同じように、イメージファイルを読み込む為、dataload()を作っています。 public void dataload() { MediaTracker mt = new MediaTracker(this); for (int j =0; j<4; j++){ for (int i =0;i<5; i++){ PackImage[j][i] = getImage(getCodeBase(),"image/packman"+j+i+".gif"); mt.addImage(PackImage[j][i], 0); } } } で、それぞれに以下のイメージを読み込みます。
try{ //データを読み込むまで mt.waitForID(0); //処理を止めています。 } catch(InterruptedException e) { // showStatus(""+e); // } } try以下も忘れずに付けておきましょう。 |
|||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||
STEP3.実際に表示する。 インベータで行っていた処理の復習ですが、表示部が少しだけ違います。 先ず、イメージ領域uraを宣言します。 Image ura; //イメージ領域「ura」の宣言 Graphics gc2; //Graphics オブジェクトを宣言
ここで作ったイメージ領域に、グラフィックデータなどを書き込んでいきます。 public void paint(Graphics gc){
最後に、正規のイメージ領域にUraをコピーして表示が完成します。 gc.drawImage(ura, 0, 0, this); // 実際に表示するところ ここで、dir処理はマウス入力処理からもらっています。また、アニメーションのstatus処理は、 statusをインクリメントすることでイメージを切り替えます。 status++; statusは、4より大きくなるとだめなので、クリアを入れます。 if (status >4){ status = 0; } |
|||||||||||||||||||||||||||||||||||||
この部分は、ソフト的には難しくないと思います。むしろイメージファイルを用意するほうが大変です。 |