SACT2 for System4.x
使用されていない(登録されていない)スプライト番号を取得します。
int SP_GET_UNUSE_NUM(int nMin = 1, int bCreate = true);
番号の最小値
省略した場合は1
SP_GET_UNUSE_NUM を呼び出した時点で仮スプライト(1x1の透明スプライト)を 作成するか否かのフラグ。
true | 作成する(デフォルト) |
false | 作成しない |
スプライト番号
取得されるスプライト番号は、 nMin(省略した場合1)以上の使用されていないスプライト番号の中で最小のものになります。
たとえば、何もスプライトが登録されていない状態で、
int a = SP_GET_UNUSE_NUM(1000); int b = SP_GET_UNUSE_NUM(1000); int c = SP_GET_UNUSE_NUM(1000);
と呼び出すと、a=1000,b=1001,c=1002となります。
※以下の説明は、bCreateをfalseに設定する場合の注意事項です。 デフォルトのまま使用する場合は、特に見る必要はありません。
まず、間違いの例を挙げます。
//【間違いの例】 //nSP1,nSP2のそれぞれに新しいスプライト番号を取得したい int nSP1 = SP_GET_UNUSE_NUM(,false); int nSP2 = SP_GET_UNUSE_NUM(,false);
この例では、2番目の SP_GET_UNUSE_NUM を呼び出した時点ではnSP1番のスプライトは作成(登録)されていないため、 nSP2はnSP1と同じ値になってしまいます。
この現象を簡単に回避するには、bCreateフラグを省略(デフォルトのtrueを使用)し、
//【正しい例1】 //nSP1,nSP2のそれぞれに新しいスプライト番号を取得したい int nSP1 = SP_GET_UNUSE_NUM(); int nSP2 = SP_GET_UNUSE_NUM();
のようにします。ただし、この場合引数の説明に書いたように SP_GET_UNUSE_NUM を呼び出す毎に1x1の仮スプライトが無駄に作成されます。
通常の使用では、上記の無駄は無視できる範囲だと思いますが、 パフォーマンスが気になる場合には
//【正しい例2】 //nSP1,nSP2のそれぞれに新しいスプライト番号を取得したい int nSP1 = SP_GET_UNUSE_NUM(,false); SP_SET_CG(nSP1, 1001); int nSP2 = SP_GET_UNUSE_NUM(,false); SP_SET_CG(nSP2, 1002);
のように書けば無駄は省けます。ただし、場合によってはコードの見通しが悪くなったり、 書き間違えのもとになるかもしれません。
その場合、以下のように、専用の関数をそれぞれの場合に応じて作成するのもひとつの方法です。
//CGをセットして新しいスプライトを作成する関数 int スプライト作成(int nCG) { int nSP = SP_GET_UNUSE_NUM(,false); SP_SET_CG(nSP, nCG); return nSP; } //呼び出し側の例 int nSP1 = スプライト作成(1001); int nSP2 = スプライト作成(1002);
Copyright © 2002-2004 ALICE-SOFT