Japanese | English | Korean

Tutorial

MascotCapsule アプリケーションの基本構成

これから MascotCapsule をご利用いただく方へのチュートリアルです。ここでは MascotCapsule アプリケーションの基本構成について説明します。

フレームワーク系

フレームワーク系の事項について、「プログラム構成」および「アニメーションの実現」に分けて、簡単に説明します。

プログラム構成

携帯 Java 環境においては、VMおよび実装済みクラスライブラリによる実行環境を前提にアプリケーションを作成することになります。
MascotCapsuleアプリケーションの場合、次の2個のクラスを定義するのが素直でわかりやすいかと思われます。

アプリケーションクラス

アプリケーションとしての起動、一時停止、再開、終了等、および描画キャンバスクラスの生成等を行います。MIDP環境においてはMIDletクラスを拡張する形で実装することになります。

描画キャンバスクラス

実際の3D描画を行うためのクラスです。描画のための各種変数およびメソッドを定義し、初期化処理、画面更新処理、ユーザインターフェース処理等を実行します。具体的には Canvasクラスを拡張して実装することになります。


アニメーションの実現

アニメーションをどのように実現するかも重要なポイントです。以下、画面の周期的な更新およびダブルバッファリングについて簡単に説明します。
アニメーションは一定時間毎に画面を更新することで行います。一定時間毎に画面更新処理を起動するためのしかけとしては、一般的にスレッドまたはタイマイベントを使用します。

スレッドを用いる

初期化の流れの中でスレッドを生成し起動します。スレッドの処理本体は関連付けられたオブジェクトの run() メソッドとして記述します。描画中は永久ループが実行されるように構成します。典型的なループ処理は下記の内容を含みます。

・描画前処理 : 各種描画用パラメータのセットアップ等
・描画要求 : 通常 repaint() 呼出し
・一定時間のスリープ : 通常sleep() 呼出し

描画要求( repaint() )後、システムが適切なタイミングで実際の描画メソッド( paint() )を呼出してくれます。なお、ループのサイクルタイムによってフレームレートが決まります。

タイマイベントを用いる

初期化の流れの中でタイマオブジェクトを生成し起動します。一定時間毎に起動される処理はタイムアウト時に呼出されるメソッドに記述します。処理としては下記内容を含みます。

・描画前処理 : 各種描画用パラメータのセットアップ等
・描画要求 : 通常 repaint() 呼出し
・(タイマ再起動) : リピート指定が可能であれば不要

ダブルバッファリング

アニメーションについては、「ダブルバッファリング」も重要なポイントです。次に描画される画面データの作成と実際の画面描画を別にすることで、ちらつきのないアニメーションが可能となります。

ただし、現行の MascotCapsule 組込み機種においては、システム自体が「ダブルバッファリング」をサポートしていることが多いこともあり、本書ではアプリケーション側での「ダブルバッファリング」実装については特に説明していません。どうしても必要な場合は、市販書籍等を参照して実装するようにしてください。