1

私は次のコードを持っています:

trace('width1 : '+ width);
_selected = new ScaleBitmap(new SearchDropDownItemSelectedBitmap(0, 0));
_selected.scale9Grid = new Rectangle(5, 5, _selected.width - 10, _selected.height - 10);
_selected.width = 109;
_selected.x = 2;
addChild(_selected);
trace('width2 : '+ width);

表示されます:

[trace] width1 : 0
[trace] width2 : 109

これは、子が x=2 に配置されている間、私の要素がその子と同じサイズであることを意味します。なぜそのように動作するのですか?実寸はどうやって知ることができますか?(ここでは 109+2=111 のはずです)

4

1 に答える 1

2

Flash は、コンテンツに基づいて表示オブジェクトの幅を処理します。子オブジェクトの周囲に最小のバウンディング ボックス (下図の青で表示) が作成されます。親ムービー クリップの幅は、このバウンディング ボックスの幅です。

これらの計算では中心点は使用されません。

必要に応じて、ムービークリップの X 位置をその幅 (_selected.x + _selected.width) に単純に追加できますが、これは中心点の左側にある子コンテンツ (負の値) を考慮していません。

ここに画像の説明を入力

于 2012-07-09T04:03:44.193 に答える