gpt4 book ai didi

flash - 为什么obj.getBounds()。height的高度大于obj.height的高度?

转载 作者:行者123 更新时间:2023-12-02 04:17:04 24 4
gpt4 key购买 nike

我是Flash和ActionScript的新手,但管理起来很好。阻碍我前进的一件事是widthheightDisplayObject(Container)属性。我终于开始了解他们,并了解到Sprite的宽度和高度仅由它们的内容决定。

但是,我不理解以下内容:我有一个Sprite,向其中添加了许多Button。所有按钮的height为30,而y为0。因此,我希望包含heightSprite为30。令人惊讶的是,height为100。
heightDisplayObject属性的Adobe文档指出:

指示显示对象的高度,以像素为单位。根据显示对象内容的边界计算高度。

显然,对象的“边界”很重要。因此,我继续在包含SpriteButton中编写了这个小测试:

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);

此代码遍历添加到其显示列表的所有对象,并显示其 yheightgetBounds().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);

    最佳答案

    从Adobe:

    返回一个矩形,该矩形定义相对于targetCoordinateSpace对象的坐标系的显示对象的区域。考虑以下代码,该代码显示返回的矩形如何根据传递给该方法的targetCoordinateSpace参数而变化:

     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()方法返回的Rectangle包括形状上的任何笔触,而由getRect()方法返回的Rectangle没有。有关示例,请参见getRect()方法的描述。

    据我了解,按钮的getbounds默认设置为100。尝试将高度增加到100以上,并且getbounds仍将返回100。我的猜测是,这是为每个控件设置的某种默认值。

    另外,如果您希望获得身高,为什么不选择:
    getChildAt(i).getBounds(this).height

    用 :
    getChildAt(i).height

    关于flash - 为什么obj.getBounds()。height的高度大于obj.height的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2371761/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com