この記事のURL

http://www.dango-itimi.com/blog/archives/2013/001153.html


FLASH tips Toolkit for CreateJS & Haxe : シンボルの初期表示サイズ・位置情報取得 nominalBounds

CreateJS の Container クラスには width や height といったプロパティは用意されていません。なんとか width や height を取得する方法はないものかと調べてみたところ、「Toolkit for CreateJS 1.1」によって出力された javascript ファイル内の各 Container.nominalBounds プロパティを利用すれば、ある程度代用が効くことがわかりました。

nominalBounds プロパティ

Toolkit for CreateJS によって出力された javascript ファイルの内容を見てみると、以下の様な記述を目にします。

(lib.sample = function() {
	…略…
}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(0,20,550,360);

lib.sample.nominalBounds プロパティが lib.sample クラスの初期表示サイズ・位置情報となります。「初期」のデータという事で、スクリプトによってこの sample クラス内に何か別のシンボルが配置されたり 位置が移動したとしても nominalBounds の値が変わることはありません。

nominal の意味を調べてみると「わずかな」という意味のようですが、わずかながらでも大変助かる仕組みでありがたいです。素材データの画像の大きさに変更がかかったり、fla ファイル内シンボルの表示サイズを変更したりする際、逐一 haxe 側にて手動で表示サイズの数値変更を行う必要は無くなります。

注意事項としましては、仕様なのか不具合なのかはわかりませんが、Bitmap クラスに対しては以下の様な記述になってしまっており、lib.sample2 の表示サイズが取得できない状況となっています。

(lib.sample2 = function() {
	…略…
}).prototype = new cjs.Bitmap(); //変数 p への代入が抜けている
p.nominalBounds = new cjs.Rectangle(0,0,36,34);

今後の Toolkit for CreateJS のバージョンアップで改善されるかもしれません。

hexe での対応

nominalBounds プロパティは「Toolkit for CreateJS」によってダイナミックに Container クラスインスタンスに付与されたものであり、「CreateJS」でサポートしているプロパティではありません。
Container.hx 内に nominalBounds フィールド変数を定義してしまえばコンパイルが楽ではありますが、以下のように別途変換用クラスを設けて対応します。

package lib.toolkit_for_createjs.utils;

import createjs.easeljs.Rectangle;

class ContainerUtil {

	public static function getNominalBounds(container:Dynamic):Rectangle{
		
		return container.nominalBounds;
	}
}

生成した Container インスタンスを ContainerUtil.getNominalBounds メソッドの引数に指定する事により、Container インスタンスの初期表示サイズ・位置情報を取得できます。

[ FLASH ] [ tips ] 投稿者 siratama : 2013年01月22日 12:23

トラックバック

http://www.dango-itimi.com/blog/mt-tb.cgi/1113

コメント

以下コメントを書き込むだけでは、管理人には通知が行われません。通知を行いたい場合、管理人の書き込みに「返信」を押してコメントをしていただくか、あるいは Google+, Twitter へご連絡ください。




[EDIT]