Flash と ActionScript は初めてですが、うまく管理できています。私の邪魔をし続けているものの 1 つは、s のwidth
とheight
プロパティですDisplayObject(Container)
。私はついにそれらの周りに頭を抱え始めており、Sprite
たとえば a の幅と高さはそれらの内容によってのみ決定されることを学びました。
私は次のことを理解していません:私はたくさんのs をSprite
追加するを持っています。Button
ボタンにはすべてheight
30 と0 があります。そのため、含む の は 30 であるy
と予想されます。驚いたことに、は 100 です。height
Sprite
height
height
a のプロパティに関する Adobe ドキュメントには、次のように記載されていDisplayObject
ます。
表示オブジェクトの高さをピクセル単位で示します。高さは、表示オブジェクトのコンテンツの境界に基づいて計算されます。
どうやら、オブジェクトの「境界」が重要です。Sprite
だから私は先に進んで、 s を含むこの小さなテストを書きましたButton
:
for (var i:int = 0; i < numChildren; ++i)
{
trace("Y: " + getChildAt(i).y + " H: " + getChildAt(i).height);
trace("BOUNDS H: " + getChildAt(i).getBounds(this).height);
}
trace("SCALEY: " + scaleY + " TOTAL HEIGHT: " + height);
このコードは、表示リストに追加されたすべてのオブジェクトを繰り返し処理し、それらのy
、height
および のgetBounds().height
値を表示します。驚くべきことに、出力は次のとおりです。
Y: 0 H: 30
BOUNDS H: 100
... (5x)
SCALEY: 1 TOTAL HEIGHT: 100
これは、ボタンの境界が実際には高さ (および視覚的に表示される高さ) よりも大きいことを示しています。しかし、なぜそうなのかはわかりません。だから私の質問は:
- ボタンの境界が高さよりも大きいのはなぜですか?
Sprite
含まれるオブジェクトの位置とサイズに基づいてボタンが予想よりも大きくならないように、ボタンの境界を設定するにはどうすればよいですか?
ちなみに、ボタンは次のように作成されます。
var control:Button = new Button();
control.setSize(90, 30);
addChild(control);