ケチってひとつの変数(配列)に、毎ステージの背景画像をLoadDivGraphして使っています。
すると、6ステージ目で必ず背景が真っ黒になってしまい、
ログには「グラフィックハンドルの数が限界数( 32768 )に達していて新たなハンドルを作成できません」と
表示されています。
この掲示板で検索したところ、
「ループする様な関数にLoadDivGraphは掘り込んではならない」、といったアドバイスがありました。
とりあえずこの掲示板で確認できた対処?はそれくらいでした。
しかし、自分のそのLoadDivGraphは毎度ステージクラスを実行時の
初期化関数内に設置しており、ステージが始まった時点で
LoadDivGraphは読み込みなどされていないはずなんです。
つまり、ループはしてないはずです。
しかし、正直申しますと
「グラフィックハンドルの数が限界数」というところから自分は理解出来ておりません。
グラフィックハンドル(変数)は、普段の数値を入れるだけの変数と違って
上書きされてはいかない、ということでしょうか?
しかし、そう考えた場合、自分のイメージでは
ステージ2の段階から背景はおかしくなるはずなんですが。。。
なぜ6ステージまではまともに機能しているのか、わかりません。
とりあえず、構成はこうです。
ステージクラスの初期化関数{
//毎回、そのステージ№に合わせて、ひとつしか無いグラフィックハンドル変数に個々の画像情報を入れる
switch(ステージ数){
case 1:
LoadDivGraph("1面のファイル名",5400,60,90,8,8,グラフィックハンドル変数);
break;
case 2:
LoadDivGraph("1面のファイル名",5400,60,90,8,8,グラフィックハンドル変数);
break;
case 3:
LoadDivGraph("1面のファイル名",5400,60,90,8,8,グラフィックハンドル変数);
break;
case 4:
LoadDivGraph("1面のファイル名",5400,60,90,8,8,グラフィックハンドル変数);
break;
case 5:
LoadDivGraph("1面のファイル名",5400,60,90,8,8,グラフィックハンドル変数);
break;
case 6:
LoadDivGraph("1面のファイル名",5400,60,90,8,8,グラフィックハンドル変数);
break;
case 7:
LoadDivGraph("1面のファイル名",5400,60,90,8,8,グラフィックハンドル変数);
break;
以下、ずっと続きます
}
}
ステージクラスの描画関数{
グラフィックを描画する
}
素直に、各ステージ用のグラフィックハンドルを作って読み込ませたほうがいいのでしょうか?
しかし、この方法をしてる方もぜんぜんいらっしゃると思うのです。
だとすれば、私の処理になにがどう足りないのでしょうか?
教えてください。
もしかして、グラフィックハンドル内を初期化する命令ってあるのでしょうか?
それをステージが終わるたびにしてやると、いいとか、、、