今日のBREWネタは、前に書いた続き、全日本VSパイオニアというバレーボールゲームで、栗原恵さんをオブジェクトにして、操作したいとき、BREWのコントロール以外に、自分で作りたいオブジェクト、たとえば、自分で作ったキャラ(=栗原さん)などを、1クラスと考えて表示させるためには?についてです。
クラスといっても、じゃあクラスIDとか、ああいうのに関係するのかというと、実は違ったりします。
クラスIDっていうのは、基本的にアプリに対して振られるもので、ここでいう、自分で作ったキャラっていうのは、アプリの「中で」使う1つのクラス。そこで、これとは違います
(そう考えないと、
栗原さんで1クラス、1クラスID必要なのでKDDIに申請、
佐々木さんで1クラス、1クラスID必要なのでKDDIに申請、
吉原さんで1クラス、1クラスID必要なのでKDDIに申請、
ってなかんじになってしまいます)。
じゃあ、ここでいうクラス(=Javaなんかでいうクラス)は、どのように表現するかというと、
(1)1つのクラスとして(class代わり)のstruct構造体をもちます
(2)「クラス名_関数名」でメソッドに対応する関数を作ります。
特に、以下の関数は必須。
クラス名_Create で生成
→(1)のクラス構造体をMALLOC
クラス名_Release で消滅
→(1)のクラス構造体をFREE(FREEIF)
します。名前は、どーでもいいです。
(3)そして、それ以外にも、必要なら、クラス名_関数名で関数をもちます。
たとえば、栗原さんのキャラを作るとしたら、
ほかにIMEMBER_HandleEventなんかをつくって、
イベント処理(画面のHandleEventの中に、
他のコントロール同様一緒に書く)したり、
画像のリドローなどが必要です。
画像を書いても、IDisplay_Updateしない限り見えません。
で、ここで画像を出すときなんですけど、こんなところにも、確かに画像の出力方法は書いてある。
で、今は変わったかもしれないけど、JPEGの場合は、非同期で、BMPの場合は、同期でもOKということになる。
この方法、イメージを貼りこむような場合だったら、いいかもしれない。
たとえば、バレーボールのゲームで、栗原さんが、16X16どっとのイメージの場合、いったん前の部分を下地の色で塗って、その後、栗原さんのキャライメージ(やほかの選手のキャライメージ)を載せて、IDISPLAY_UPDATEすれば(イメージが同期の場合は)OKっていえる。
ところが、試合場面なら16X16でいいけど、たとえば、全日本対パイオニアの試合で、栗原さんのアタックをカオル姫が拾えなくって、点が入ったとき、画面全体を栗原さんのアップにして、顔の表情を変えたいとかいった場合、このように、イメージでやっていたんじゃあ、話にならないって言うか、へん。
パイオニアの点が入ったんならいいけど、もし、全日本に点が入っちゃって、大山さんが決めた日にゃーたいへんです。走り回りますから、あの人。顔のアップなんかにしたら、風景もめまぐるしく変えないといけない。
で、昔、テライユキなんていうアイドル?がいたと思うけど、こーいう場合、あのテライユキみたいな感じで、3次元で表現して、その3次元キャラクタを動かす。。
。。にはどーするんだ!!
イメージ張り込めばいいって言う話しじゃないぞ!!
ってことになる。
で、その話なんだが、長くなりすぎたんで、今度だ。