高速スプライト表示 Sprites(Tribuf改め)の解説のようなもの
(sorry!)
最初だけやっていること:
- 読み込んだ画像ファイル(モノクロ)をCropImageFilterで切り分け、
RGBImageFilterで色を変えてsprite[]を作る。
- Bに背景を描く。(A,Bは単一のオフスクリーンイメージの2領域)
- BからAへ全面copyArea()。
- spriteをAに描画。
- Aから実画面に全面描画(drawImage)。
repaint()ごとにやっていること:
- 旧spriteの消去(旧spriteの領域だけBからAにcopyArea() )。
- spriteをAに描画。
- 新旧spriteの領域だけ、Aから実画面に描画。ただし画面が破損したら全画面描画。
- 次のバージョンでは各スプライトを動画にする予定。
- スプライトが交差するときに欠けて見えることがあります。
描画とCRTスキャンのタイミングの問題と思われます。これも次バージョンで改良予定。
元画像(8ken_bw.gif):

CropImageFilter後:
sprite[](RGBImageFilter後):
(source)
Image iA(オフスクリーンイメージ):
┏━━━┳━━━┓
┃ ┃ ┃
┃ A ┃ B ┃
┃ ┃ ┃
┗━━━┻━━━┛
実画面:
┏━━━┓
┃ ┃
┃ ┃
┃ ┃
┗━━━┛
どうやら、Aから実画面に描画する際に、Bに相当する部分も描画してしまう
ようです。Applet ではなく Frame に描画すると分かります。
悪影響があるとマズイので、clipRectすることにしましたが、効果は…?
ご使用は自由です。著作権に配慮していただけると幸いです。
村田 弘幸
Hiroyuki Murata
faichan@kt.rim.or.jp