« おおおぅ・・・ | Home | 焼肉奉行 »

Feb 272010

Height Problems in fl.controls.*

プロトタイプやらスケルトンを急ぎで作りたいときに、まれにfl.controls系を使いますが、配置の際に高さの問題がでてきて、いつも忘れてバタバタするのでメモ。

fl.controls系でテキストフィールド(textArea)を内包しているコンポーネントは高さが100pxになる。変数で配置して行く場合など非常にうっとおしいことになる。単体でのheightはoverrideされて見た目の高さを取得できるが、親DisplayObjectのheightは100px。ちなみにgetRectだと単体でも100になる。これはoverrideされていないらしい。(半端だ)

これの原因は大概コンポーネントの中に含まれるtextAreaで、autoSizeがカマされてない素の状態でaddChildされているのかheight=100である。fl.controls.TextInputだと以下のような感じで調整してやれば最適な高さになる。

_inputFld = new TextInput();
inputFld .getChildAt(0).height = 0;

ただfl.controls.ComboBoxとかだと階層化していてめんどくさいので、

var pd:ComboBox = new ComboBox();
_optHeight(pd);
...
private function _optHeight(arg:DisplayObjectContainer):Number
{
	var child:DisplayObject;
	for (var a:int = 0; a < arg.numChildren; a++)
	{
		child = arg.getChildAt(a);
		child.height = 0;
		if (child is DisplayObjectContainer) _optHeight(child as DisplayObjectContainer);
	}
	return arg.height;
}
な感じでやっちゃう。 全部試したことがないので、NGなコンポーネントもあるかも知れないけど。


ということでメモ

Leave a comment

Search and Archives