▼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) {
            }
        }    
    }
}



−戻る−