龍谷大学> 理工学部> 数理情報学科> Team539> 樋口三郎> 担当科目> 2007 年> iアプリ/S!アプリ/オープンアプリを作ろうプロジェクト---数理情報演習>第 04 回

ダブルバッファリング/ 乱数 / gif png イメージの読み込み

[目次|前回|次回|携帯Javaのページ|ローカルドキュメント]
Time-stamp: "2007-10-31 Wed 09:07 JST hig"

乱数

import java.util.Random;
して Random クラスを使います. サンプルRandomSample.java参照.

終了

強制終了でない終了の書き方は, iアプリと S!アプリ/EZアプリでちょっと違います. void terminate(void)void destroyApp(boolean) を, キー入力に応じて呼び出せばいいのです. ただし, MIDPの場合, (まだ説明していない)例外処理が必要です. サンプルRandomSample.java参照.

ダブルバッファリング

iアプリでのアニメーションの画面のちらつきを防ぐには, 結論としては, DoubleBufferSample.javaのように, paint メソッドで, iアプリの場合
void paint(Graphics g){
  g.lock();
  // g に対して fillRect などを実行
  g.unlock(true);		
}
とすればいいです. なぜでしょう? このようにしたときと, しなかったときを比べてみましょう. S!アプリ/EZアプリの場合 自動的に対策がダブルバッファリングがされており, ちらつきません. 実際, DoubleBufferSample.java で, doDoubleBufferingByHand を true にしても false にしても表示の様子には 変化がありません.

イメージの読み込み

画像(ビットマップ)ファイルとして, DoJa では GIF/JPEG 形式(古い端末は GIFのみ), MIDP では PNG 形式を用います.

イメージを Canvas に貼ろう

次の例ImageSample.javaを参考に, Canvas に下に挙げてある GIF/PNG 画像を貼りましょう.

画像ファイルは以下にあります. まず,下の GIF/PNG 画像をファイルとして保存しましょう. ブラウザの右クリックからイメージを保存を選びます.

ファイル名gifpng
pose0.gif
pose1.gif
surface.gif

方法1: アプリの一部としてイメージをダウンロードさせる. 上の画像ファイルをZ:\apps\[プロジェクト名]\res あるいは C:\WTK104\apps\[プロジェクト名]\res にいれます.

方法2: アプリのダウンロード後に, イメージを http でダウンロードさせる. 上の画像ファイルをこれを Web サーバに置く. ADF 設定で, UseNetwork:http とする.

GIF/PNG画像を作ろう

自分で GIF/PNG 画像をつくるには, たとえば, スタートメニュー>すべてのプログラム>アクセサリ>ペイントなどのペイント(画像)ソフトを使いましょう. そして, 作った BMP ファイルをIrfanView (C:\Program Files\IrfanView\i_view32.exeなどで, GIFやPNGに変換しましょう.

ただし, 携帯の画面が 240ドットx240ドットくらいであることを考慮して, 目的にあったサイズとするようにしましょう. Irfanview で拡大縮小することもできます. ペイントで画像のサイズを設定するには, 変形>キャンバスの色とサイズです.

Linux の場合, Linux のビットマップエディタを

penguin10% bitmap -size 20x30 &
penguin10% xpaint -8 -size 20x30 &
penguin10% gimp &
のように使って, GIF/PNG で保存すればいいのです. Linux なら, xv で変換して GIF/PNG/JPEG にしましょう. ただし, 画像ファイルは端末に適切な(小さめの)サイズにして, 色の個数は 28色であるようにします. -8 はそのためのオプションです.

課題

時間とともに, 多少ランダムに, キー入力に反応して, 画像が移動/変化するようなアプリを作ろう 時間があれば, 自分で作った画像ファイルを使おう.