▼MIDP2.0メモ▼
シーンファイルの再生する
シーンファイルの再生を行うプログラムです。ゲームを始めとする多くのアプリケーションでは、「リテインモード」と呼ばれるシーングラフ API が使用されます。この場合、グラフィックデザイナーは、3Dモデリングソフトを使用してシーングラフを作成します。シーングラフは JSR184ファイル形式で保存してください。アプリケーションでは、ロードしたシーングラフの各部分を操作できます。基本的には、できるだけ多くの作業をモデリングソフトで行うようにします。アニメーションパスやその他の効果が含まれている場合もあります。
シーンファイルの準備
・skaterboy.m3g
プログラム
RetainedEx.java import javax.microedition.lcdui.*; import javax.microedition.midlet.*; //リテインモードを使う(本体) public class RetainedEx extends MIDlet implements Runnable { static RetainedCanvas c; //コンストラクタ public RetainedEx() { c=new RetainedCanvas(); Display.getDisplay(this).setCurrent(c); (new Thread(this)).start(); } //アプリの開始 public void startApp() { } //アプリの一時停止 public void pauseApp() { } //アプリの終了 public void destroyApp(boolean unconditional) { } //実行 public void run() { c.exe(); } }
RetainedCanvas.java import javax.microedition.lcdui.game.*; import javax.microedition.lcdui.*; import javax.microedition.m3g.*; //シーンファイルを再生する(キャンバス) class RetainedCanvas extends GameCanvas { //コンストラクタ RetainedCanvas() { super(false); } //実行 void exe() { //グラフィックスの生成 Graphics g =getGraphics(); Graphics3D g3=Graphics3D.getInstance(); //ワールドの読み込み World world=null; try { world=(World)Loader.load("/skaterboy.m3g")[0]; } catch(Exception e) { e.printStackTrace(); } //開始時間の取得 long startTime=System.currentTimeMillis(); while (true) { //アニメ位置の指定 world.animate((int)(System.currentTimeMillis()-startTime)); //ターゲットのバインド g3.bindTarget(g); //ビューポートの指定 g3.setViewport(0,0,240,283); //ワールドのレンダリング g3.render(world); //ターゲットのリリース g3.releaseTarget(); //画面に反映 flushGraphics(); //スリープ try { Thread.sleep(50); } catch (Exception e) { } } } }