イメージの利用
Graphicsクラスは非常に万能で、時間を惜しまずに、且つ手間を厭わずに作業すればこのクラスで表現出来無い画面は無いと言っても過言ではありません。
ですが、ある程度大きなイメージをいざ描こうとなると、それだけで何百行も費やす様な冗長なプログラムになってしまいがちです。
そこで、予め決まった形のキャラクターやアイテムはイメージ画像ファイルとして作成しておき、必要時はそれを読み込むだけで使える様にしておくと便利です。
MediaImageクラス
画像を扱うにはMediaImageクラスを用います。利用するにはまずcom.nttdocomo.io.*をインポートする必要があります。
import com.nttdocomo.io.*;
また、そのクラス内にImageオブジェクトを設けておきます。
/**画像フィールド*/
Image image;
次に、コンストラクタで以下の処理を行いましょう。今回はSampleMainクラスに記述しています。
public SampleMain() {
  thread = new Thread(this);
  thread.start();
  MediaImage mediaImage = MediaManager.getImage("resource:///res/sample.gif");
  try {
    mediaImage.use();
    image = mediaImage.getImage();
  } catch (ConnectionException e) {
  } catch (UIException e) {
  }
}
ここ迄の記述でフィールドimageに画像を代入し終えました。今imageはsample.gifという画像を持っています。
当然ながらこの画像ファイルも事前に作成しておく必要があります。保存する場所はeclipse\workspace\Sample\resです。
炎30x30
では実際に画面に炎を表示させてみましょう。画像を表示するにはGraphics.drawImage()メソッドを用います。メソッドの概要を以下に示します。
Graphics.drawImage(Image image, int x, int y);
@param Image image
使用する画像を持つ変数
@param int x
描画を開始するx座標
@param int y
描画を開始するy座標
各パラメータ
使用法はGraphics.drawString()とほぼ同じで、第1パラメータが違うだけです。今回の場合だと例えばこの様に記述します。
g.drawImage(image, 105, 105);
画面キャプチャ
実行結果です。一度imageを作成しておけば、何度でも表示させる事が可能です。
実践例
勿論この(x, y)座標は変数で指定する事も出来ますから、これ迄の知識で炎を自在に動かす事も出来る筈です。
また、それ以外にもオブジェクトや障害物として漂わせてみても面白いかも知れません。
他にもキャラクターやアイテム、アイコン、背景等色々と用途はあると思われます。
単純なラインやブロック等はGraphics.drawLine()やgraphics.drawRect()といった基本メソッドで行うとして、配色を何度も変える必要がある様なオブジェクトはこのGraphics.drawImage()に任せると、作業が円滑に運べる筈です。
inserted by FC2 system