種別 : 技術情報
公開日 : 2007/03/03
対象バージョン : 絵箱3.2.0
絵箱3.2のEbakoRBScriptプラグインには、REALbasicのバグが原因でいくつかの 重大な制限があります。最悪の場合絵箱がクラッシュしてしまうので、プラグイン 編集前に必ず以下の事項を確認してください。
なお、障害のほとんどはREALbasicの問題と思われます。
従って将来的にREALbasicのバージョンアップによりこの問題は修正される可能性があります。
IntelCPUのMac上でRedim構文を使用すると確実にアプリケーションがクラッシュします。
Dim Arr(-1) as Integer
Redim Arr(1) // >>クラッシュ
Redim構文はプラグインにおいて、実行時に作業領域としてColor型配列を確保するために 多く利用されていました。絵箱3.2ではこの方法は利用できません。
例えば、画像を180度回転するために以下のようなコードを書くことができました。
Dim X,Y as Integer
Dim C,Cols(0,0) as Color
Redim Cols(Width,Height) //Width,Heightは実行時まで決まらないため、Redimが必要
For Y = 0 to Height - 1
For X = 0 to Width - 1
Cols(Width - X - 1,Height - Y - 1) = Pixel(X,Y) //反転して配列へコピー
Next
Next
For Y = 0 to Height - 1
For X = 0 to Width - 1
Pixel(X,Y) = Cols(X,Y) //配列から画像に戻す
Next
Next
このコードは絵箱3.2では利用できません。
Dim X,Y as Integer
Dim Re as Boolean
Re = Graphics_NewPicture("MyImg",Width,Height)
If NOT Re Then
//なんらかのエラー処理(略)
End If
//NewPictureの実行で、描画先が新しい画像=MyImgになる
Graphics_SelectPicture "" //描画先を元の画像に戻す
For Y = 0 to Height - 1
For X = 0 to Width - 1
Pixel(X,Y) = Pixel("MyImg",Width - X - 1,Height - Y - 1) //MyImgから取得した明度を反転
Next
Next
絵箱3.2ではRof,Gof,Bof,Hof,Sof,Vof,Pixelの各関数がオプションとして
第一引数にオフスクリーンの名前をとれるようになりました。(取得のみ)
これを用いると従来のColor型配列を使用した場合に比べ、高速になります。
Max,Minを使用すると文脈によりアプリケーションがクラッシュすることがあります(詳細未検証)
代替策として、下記のように関数を自分で定義することができます。
Function AltMax(V1 as Double,V2 as Double)
If V1 > V2 Then
Return V1
Else
Return V2
End If
End Function
//以下その他のコード...
作成者・連絡先:Mattsun []