トピック

オブジェクト指向を使うとスプライトの管理が楽になるって聞いたのですが・・・

6そうだね
プレイ済み
返信[1]
親投稿
MIKI ifconfig
1. spset 定義番号 out sp で管理番号を取得します。 2. 必要な属性など(移動速度など)は spvar に入れておきます。たとえば spvar sp, 0, 移動速度x spvar sp, 1, 移動速度y 3. spfunc でコールバック関数を登録します spfunc sp, "spmove" '後述 4. 制御ループ内で call sprite を実行します。
3そうだね
プレイ済み
返信[2]
親投稿
MIKI ifconfig
5. call sprite を実行すると、 spfunc したスプライトひとつひとつごとに コールバック関数が呼び出されます。 def spmove var sp = callidx '管理番号はシステム変数 callidx に入っています var px, py spofs sp out px,py ' 現在位置取得 var vx = spvar(sp, 0) '移動速度 x 取得 var vy = spvar(sp, 0) '移動速度 y 取得 px = px + vx: py = py + vy '位置更新 spofs sp, px,py ' 新しい位置に移動 end
3そうだね
プレイ済み
返信[3]
親投稿
MIKI ifconfig
※ spvar は 8 個しか値を保持できませんが、 たとえば管理番号自体を外部配列へのインデックスとすれば、いくらでも拡張できます。 例 var vx[512], vy[512] '移動速度x,y を保存するグローバル配列 ・ステップ2 でspvar の代わりに vx[sp]=初期速度x とする。 ・コールバック関数内では var vx の代わりに vx[sp] を参照する。
1そうだね
プレイ済み
返信[4]
親投稿
STiNGER STiNGER8901
作例を作ってみました。スプライトの回転をSPROT関数ではなく配列変数で管理しています。SPROT関数ではスプライトの回転を整数でしか管理できないためです。
1そうだね
プレイ済み
返信[5]
親投稿
みむ*mim hidemimtp
MIKIさんの説明すばらし~ でも「外部配列でもできるよ」という3つめのアドバイスを元にした作例は、オブジェクト指向とはちょっと違うかも(^^ 別で配列を作らなくていい、無駄なメモリを食わない、SPが増えればデータ枠が自動で増え、SPが開放されれば開放されるというのが「オブジェクト志向っぽいやり方」だと思うので、MIKIさんの書き込みの最初の2つを使って何か作ってみては?
1そうだね
プレイ済み