我是 Flash 和 ActionScript 的新手,但管理得很好。不断阻碍我的一件事是 s 的width
和height
属性DisplayObject(Container)
。我终于开始了解它们,并了解到 a 的宽度和高度Sprite
仅由它们的内容决定。
我不明白以下内容:我有一个Sprite
我添加了一堆Button
s 的。这些按钮都有一个height
30 和一个y
0。因此,我希望height
包含Sprite
的 是 30。令人惊讶的是,height
是 100。
height
a 属性的Adobe 文档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);