Javaプログラミング/サーバサイド&ケータイJava

Canvasクラスを更に使いこなす(3ページ目)

今回は、Canvasのイメージ表示やイベント処理について理解し、簡単なパズルゲーム作りに挑戦してみましょう。

執筆者:掌田 津耶乃

イメージの利用


ある程度複雑な描画ができるようになると、やはり「イメージ」を利用した表示が必要となります。すべて図形を描いて作るより、あらかじめ用意しておいたイメージファイルを読み込んで表示したほうが、はるかにきれいな画面が作れますね。

イメージの描画には、ImageとMediaManagerという2つのクラスが必要となります。MediaManagerは、文字通りメディアを管理するためのもので、これが必要なリソースからデータを読み込みメディアデータをセットアップします。そしてそこからイメージのオブジェクトであるImageインスタンスを取り出し、実際に描画に利用することになります。

では、これも簡単なサンプルを作成しましょう。まず、表示するイメージファイルを作成しましょう。今回は「img.gif」というファイル名のGIFファイルとして作成をします。そして、Eclipseのプロジェクト内にある「res」というフォルダにドラッグ&ドロップしてファイルを入れてください。iアプリのプロジェクトでは、使用するファイル類はこの「res」フォルダに収めておきます。ここに置かれたファイルは、ビルドした際に一緒にJarファイルにまとめられます。

では、このimg.gifを使用した簡単なサンプルをあげておきます。ここでは、これを読み込んで画面に表示するだけのシンプルなサンプルです。

import com.nttdocomo.io.ConnectionException;
import com.nttdocomo.ui.*;

public class SampleIApp extends IApplication {

  public void start() {
    Display.setCurrent(new MainCanvas(this));
  }
}

class MainCanvas extends Canvas {
  IApplication iapp;
  Image img;
  
  MainCanvas(IApplication app){
    super();
    try {
      MediaImage mi =MediaManager.getImage("resource:///img.gif");
      mi.use();
      img = mi.getImage();
    } catch (IllegalArgumentException e) {
      e.printStackTrace();
    } catch (SecurityException e) {
      e.printStackTrace();
    } catch (UIException e) {
      e.printStackTrace();
    } catch (ConnectionException e) {
      e.printStackTrace();
    }

    this.setSoftLabel(Frame.SOFT_KEY_2, "QUIT");
  }
  
  public void paint(Graphics g) {
    g.lock();
    g.drawImage(img,10, 10);
    g.unlock(true);
  }

  public void processEvent(int type, int param) {
    super.processEvent(type, param);
    switch(type){
    case Display.KEY_PRESSED_EVENT:
      switch(param){
      case Display.KEY_SOFT2:
        iapp.terminate();
      }
    }
  }
  
}



  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます