絵箱ver3.2 EbakoRBScriptプラグイン注意事項

種別 : 技術情報

公開日 : 2007/03/03

対象バージョン : 絵箱3.2.0

絵箱3.2のEbakoRBScriptプラグインには、REALbasicのバグが原因でいくつかの 重大な制限があります。最悪の場合絵箱がクラッシュしてしまうので、プラグイン 編集前に必ず以下の事項を確認してください。

なお、障害のほとんどはREALbasicの問題と思われます。
従って将来的にREALbasicのバージョンアップによりこの問題は修正される可能性があります。


1.Redim構文は使用できません

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では利用できません。
代わりに、オフスクリーン作成関数Graphics_NewPictureを用いて 以下のように記述できます。
	
		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型配列を使用した場合に比べ、高速になります。


1.Max,Min関数は使用できないことがあります

Max,Minを使用すると文脈によりアプリケーションがクラッシュすることがあります(詳細未検証)

代替策として、下記のように関数を自分で定義することができます。

	
		Function AltMax(V1 as Double,V2 as Double)
			If V1 > V2 Then
				Return V1
			Else
				Return V2
			End If
		End Function
		
		//以下その他のコード...
	


作成者・連絡先:Mattsun []

絵箱のダウンロードはこちらからお願いします