いよいよ完成

ボタンを押したら絵が動くようにしましょう。完成品はImageSample.javaです。

本質的な変更はImageCanvasクラスにあります。複数の画像を保持しないといけないので

protected Image[] image;

と画像を保持する変数を配列に変えてます。そして引数付きのコンストラクタを作成し

for (int i = 0; i < maxImage; i++) {
    String num = i < 9 ? "0" + (i+1) : "" + (i+1);
    System.out.println("Loading /images/" + num + ".png");

    try {
        image[i] = Image.createImage("/images/" + num + ".png");
    } catch (java.io.IOException ex) {
        System.out.println("Cannot read /images/" + num + ".png");
    }
}

[注意]FCSではcreateImage(String name)IOExceptionを投げるようになりました。EA1からのユーザは注意しましょう。

と複数の画像(01.png〜12.png)を配列に格納します。そしてpaintメソッドでは

protected void paint(Graphics g) {
    g.drawString("Dancing Radio", 0, 0, Graphics.TOP | Graphics.LEFT);
    g.drawImage(image[current], getWidth() / 2, getHeight() / 2, Graphics.HCENTER | Graphics.VCENTER);
}

image[current]を表示するようにします。

あとはボタンが押される毎にcurrentの値が変化するようにすれば良いです。ボタンが押された場合の処理はCanvas.keyPressed()で行ないます。これはサンプルのソースみると解ります。ここでは

public void keyPressed(int keyCode) {
    int action = getGameAction(keyCode);

    switch (action) {
    case LEFT:
    case RIGHT:
    case UP:
    case DOWN:
        current++;
        if (current >= maxImage) current = 0;
        break;
    default:
        break;
    }
    repaint();
}

と処理してます。最初の

int action = getGameAction(keyCode);

で押されたキーがどのアクションに対応するかが解ります。オマジナイのように書きましょう。続く

switch (action) {
case LEFT:
case RIGHT:
case UP:
case DOWN:
    current++;
    if (current >= maxImage) current = 0;
    break;

LEFTRIGHTUPDOWNキーが押された場合はcurrentを増加させます。これで表示させる画像が変わります。最後に

repaint();

で、変更後の画像を表示させます。

他にも変更点がありますが、非本質的なので説明を省きます。では実行してみましょう。

D:\midp-fcs\segi>javac -bootclasspath /midp-fcs/classes ImageSample.java
D:\midp-fcs\segi>preverify -classpath .;/midp-fcs/classes ImageSample ImageCanvas
D:\midp-fcs\segi>cd output
D:\midp-fcs\segi\output>set SCREEN_DEPTH=8
D:\midp-fcs\segi\output>midp ImageSample
Classpath is not set. Defaulting to "."
Loading /images/01.png
Loading /images/02.png
Loading /images/03.png
Loading /images/04.png
Loading /images/05.png
Loading /images/06.png
Loading /images/07.png
Loading /images/08.png
Loading /images/09.png
Loading /images/10.png
Loading /images/11.png
Loading /images/12.png

下の画面が表示されます。ボタンを押すと画像が動きますね。

画面イメージ


前の項目へ次の項目へ
「MIDPで遊ぼう!」のページへ
せぎてつ伝言板
このページの感想をどうぞ!
お名前(匿名OK):

メールアドレス:
最終更新日 : 2000年10月7日(土)
tetsu@segi.org