Flash 为什么obj.getBounds()height给出的高度比obj.height大?
我不熟悉Flash和ActionScript,但管理得相当好。有一件事一直在妨碍我,那就是Flash 为什么obj.getBounds()height给出的高度比obj.height大?,flash,actionscript-3,displayobject,Flash,Actionscript 3,Displayobject,我不熟悉Flash和ActionScript,但管理得相当好。有一件事一直在妨碍我,那就是DisplayObject(Container)s的width和height属性。我终于开始了解它们,并了解到精灵的宽度和高度完全取决于它们的内容,例如 但我不明白以下几点:我有一个Sprite,我添加了一堆按钮。所有按钮的高度均为30,y为0。因此,我希望包含Sprite的高度为30。令人惊讶的是,高度是100 DisplayObject的height属性的Adobe文档说明: 指示显示对象的高度(以像素
DisplayObject(Container)
s的width
和height
属性。我终于开始了解它们,并了解到精灵的宽度和高度完全取决于它们的内容,例如
但我不明白以下几点:我有一个Sprite
,我添加了一堆按钮。所有按钮的高度均为30,y为0。因此,我希望包含Sprite
的高度为30。令人惊讶的是,高度是100
DisplayObject
的height
属性的Adobe文档说明:
指示显示对象的高度(以像素为单位)。高度是基于显示对象内容的边界计算的
显然,对象的“边界”很重要。因此,我继续在包含按钮的Sprite
中编写了这个小测试:
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);
这表明按钮的边界实际上大于其高度(以及它们在视觉上看起来的高度)。然而,我不知道为什么会这样。因此,我的问题是:
- 为什么我的钮扣有界
比他们的身高还大李>
- 我怎么能
设置按钮的边界,以便
我的
Sprite
没有比我想象的大
希望它是基于
对象的位置和大小
包含
顺便说一下,按钮的创建如下所示:
var control:Button = new Button();
control.setSize(90, 30);
addChild(control);
您似乎在跟踪容器对象的比例,但您应该对getChildAt(i)。scaleY属性(即按钮的比例)更感兴趣,该属性可能为30/100(0.3)
如果按钮本身没有缩放(这不太可能),则可能是按钮类重写了缩放和高度属性,返回的值与其父类实现返回的值不同。来自Adobe:
返回一个矩形,该矩形定义显示对象相对于targetCoordinateSpace对象坐标系的区域。考虑下面的代码,它显示了返回的矩形如何根据您传递给方法的TestRealStaseStEp参数变化:
var container:Sprite = new Sprite();
container.x = 100;
container.y = 100;
this.addChild(container);
var contents:Shape = new Shape();
contents.graphics.drawCircle(0,0,100);
container.addChild(contents);
trace(contents.getBounds(container));
// (x=-100, y=-100, w=200, h=200)
trace(contents.getBounds(this));
// (x=0, y=0, w=200, h=200)
注意:使用localToGlobal()和globalToLocal()方法分别将显示对象的局部坐标转换为显示坐标,或将显示坐标转换为局部坐标
getBounds()方法类似于getRect()方法;但是,getBounds()方法返回的矩形包含形状上的任何笔划,而getRect()方法返回的矩形不包含。有关示例,请参见getRect()方法的说明
据我所知,按钮的getbounds默认设置为100。尝试将高度增加到100以上&getbounds仍将返回100。我猜这是为每个控件设置的某种默认值
此外,如果您希望获得高度,为什么不:
getChildAt(i).getBounds(this).height
使用:
我试着用简单的movieclips复制这个,但是不能,所以我猜Button类会覆盖'height'的get属性,并返回'visible height',但是边界会返回高度,包括隐藏对象(那些带有.visible=false的对象)是的,这是胡说八道,“Button”类不知怎么搞砸了。问题是你可能有一个文本字段在里面。除非手动设置,否则文本字段的高度为100。愚蠢的土坯。
getChildAt(i).getBounds(this).height
getChildAt(i).height