Я новичок в Flash и ActionScript, но справляюсь неплохо. Одна вещь, которая постоянно мешает мне, - это свойства width
и height
DisplayObject(Container)
s. Я, наконец, начинаю разбираться в них и узнал, что ширина и высота Sprite
определяются исключительно их содержимым, например.
Я не понимаю следующего: у меня есть Sprite
, к которому я добавляю кучу Button
. Все кнопки имеют height
30 и y
0. Таким образом, я ожидаю, что height
содержащего Sprite
будет 30. Удивительно, но height
равно 100.
В документации Adobe к свойству height
объекта DisplayObject
говорится:
Указывает высоту экранного объекта в пикселях. Высота рассчитывается на основе границ содержимого экранного объекта.
Видимо, важны «границы» объекта. Итак, я пошел дальше и написал этот небольшой тест в Sprite
, который содержит Button
s:
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);