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