▼MIDP2.0メモ▼
ダブルバッファリングを行う


ダブルバッファリングを行うプログラム。


画像の準備

そらみ
-sorami.png
-48x48


プログラム
DoubleBufferEx.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

//ダブルバッファリングを行う(本体)
public class DoubleBufferEx extends MIDlet {
    DoubleBufferEx c;

    //コンストラクタ
    public DoubleBufferEx() {
        DoubleBufferCanvas c=new DoubleBufferCanvas();
        Display.getDisplay(this).setCurrent(c);
        Thread thread=new Thread(c);
        thread.start();
    }

    //アプリの開始
    public void startApp() {
    }

    //アプリの一時停止
    public void pauseApp() {
    }

    //アプリの終了
    public void destroyApp(boolean flag) {
    }
}


DoubleBufferCanvas.java
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;

//ダブルバッファリングを行う(キャンバス)
public class DoubleBufferCanvas extends GameCanvas
    implements Runnable {
    Image image=null;//イメージ

    //コンストラクタ
    DoubleBufferCanvas() {
        //キーイベントの抑制
        super(true);

        //画像ファイルの読み込み
        try {
            image=Image.createImage("/sorami.png");
        } catch (Exception e) {
            System.out.println(e.getClass().getName());
        }
    }

    //実行
    public void run() {
        Graphics g=getGraphics();//グラフィック

        int x =0;//X座標
        int y =0;//Y座標
        int dx=8;//X速度
        int dy=5;//Y速度

        while (true) {
            //画面の描画
            g.setColor(255,255,255);
            g.fillRect(0,0,getWidth(),getHeight());
            g.drawImage(image,x,y,g.VCENTER|g.HCENTER);
            flushGraphics();

            //移動
            x+=dx;
            y+=dy;
            if (x<=0 || getWidth() <=x) dx=-dx;
            if (y<=0 || getHeight()<=y) dy=-dy;

            //スリープ
            try {
                Thread.sleep(100);
            } catch (Exception e) {
            }
        }
    }
}



−戻る−