というかさえさんの示したスクリプトでもちゃんとエラー時には
「オブジェクトが多すぎる」というエラーが表示されていますよね。
ここでよーくスクリプトを読めば気づくハズなのですが...
>この対策ってとれないのでしょうか。
>オブジェクトを同じポジションに重ねようとしたときに警告かエラーをだすようにして
この問題の対策は過剰にオブジェクトを作成すると警告を出す、のままでいいと思いますよ。
1024個が妥当かどうかはプログラムによって変わるので何とも言えませんがね^^;
このテの問題はスクリプトの流れと意味をよーく考えて書けば初心者の方でも防げますしね。
>ワザと重ねたいときにはプリプロセッサなどで回避可能にするとか。
そこまでシステムが面倒みるのもどうかと思ったりするところがあるので、
ユーザー側で予めオブジェクトの最大数を設定できるようにするのはどうかな、
と思ってこんなモジュールこさえました。
#module "object"
; objlim p1, p2
; 現在描画先ウィンドウの作成できる最大オブジェクト数を変更する
; p1: オブジェクトの最大数
; 省略、0以下を指定した時は現在の最大数をstatに格納する。
; 現在作成されているオブジェクト数が設定しようとする数より多い場合は
; 新しいオブジェクトを切り詰めます( 矯正 )。
; p2: 対象ウィンドウのID
; 省略、負数を指定した時は描画先ウィンドウが対象となる。
#define global objlim(%1=0,%2=-1) objlimit %1, %2
#deffunc objlimit int p1, int p2
if( p2 < 0 ): mref bm, 67: else: mref bm, 96 + p2
if( p1 > 0 ){
if( bm.72 > p1 ){
clrobj p1, -1
bm.72 -= bm.72 - p1
}
bm.73 = p1
}
return bm.73
#global
; サンプル
objlim : mes stat ; 現在の最大オブジェクト数取得
repeat 10
input num
loop
objlim 5 : mes stat ; 最大数を5個に減らす( 矯正 )
objlim 8 : mes stat ; 最大数を8個に増やす
repeat 10
input num
loop
"矯正"の仕様が微妙ですが、HSPの仕様です。
# 制限を設けてあるため、制限を越えることをHSPは考慮していない為。
# あくまで予想です。