 |
07. スプライトの表示2 |
 |
さて,スプライトの描画部分です。
描画するためにまず原理を解説します。
スプライトはフレームバッファを呼ばれる領域に描かれます。
フレームバッファは普段画像を描いたりするCanvasとは別になっています。
また他にも仮想画面と呼ばれる領域があります。
しかし仮想画面に使えるサイズは機種依存があるので
なかなか使い方が難しいものでもあります。
(結局は最小サイズに合わせる事になるでしょう)
仮想画面に背景を書いてフレームバッファに転送してから
スプライトを描くといった使い方が一般的です。
またフレームバッファも使用時に使用するサイズを指定する必要がありますが
画面サイズ以下でないといけない制限がありますので
createFrameBuffer( getWidth(), getHeight());
というように画面サイズ分確保するのが無難でしょう。
copyArea命令で仮想画面からフレームバッファに画像を転送します。
すでにフレームバッファに何かかかれていた場合は上書きされます。
drawSpriteCharで前回定義したスプライトを描画します。
drawFrameBufferで実画面に転送されます。
disposeFrameBufferで使用が終わったフレームバッファは解放しましょう。
public synchronized void paint(Graphics g)
{
// フレームバッファの生成
createFrameBuffer( getWidth(), getHeight());
// 背景画面転送
copyArea(0,0,getWidth(),getHeight(),0,0);
// スプライト描画
drawSpriteChar( command[ 0], 0, 0);
drawSpriteChar( command[ 1], 8, 0);
drawSpriteChar( command[ 2], 0, 8);
drawSpriteChar( command[ 3], 8, 8);
// 転送
drawFrameBuffer(0,0);
// 開放
disposeFrameBuffer();
}