如何在actionscript中管理DisplayObjects的位置?

时间:2011-09-02 01:08:03

标签: flex actionscript-3 layout actionscript displayobject

我使用以下代码将DisplayObject的位置设置为居中。

obj.x = (screen_width - obj.width) / 2;

obj.x = (parentObj.width - obj.width) / 2;


我使用以下代码垂直显示2个对象。

obj2.x = obj1.width + interval


我使用以下代码垂直显示2个对象,并将它们的位置设置为居中。

var obj3:Sprite = new Sprite;

obj3.addChild(obj1);
obj3.addChild(obj2);

obj2.x = obj1.width + interval;
obj3.x (screen_width - obj3.width) / 2;


以上代码是管理DisplayObjects位置的好方法吗? 是否有更好,更简单的方法来做到这一点?

2 个答案:

答案 0 :(得分:1)

您也可以将它们添加到HGroup或VGroup中(如果您使用的是Flex 3,则可以添加到HBox和VBox)。但是当我想在不使用这些复杂对象的情况下实现垂直布局时,我通常会创建一个“update()”方法(请注意,以下代码可能包含语法错误:它仅作为算法示例提供):

private function update():void
{
    // The vertical gap between elements
    var gap:int = 4;

    // The cumuled height
    var cumuledHeight:Number = 0;

    // The number of elements
    var n:int = numElements;

    // The element at each loop
    var o:IVisualElement;
    for (var i:int = 0; i<n; i++) {

        // Gets the element
        o = getElementAt(i);

        // Sets its vertical position
        o.y = cumuledHeight + gap*i;

        // Updates the cumuled height
        cumuledHeight += o.height;
    }
}

答案 1 :(得分:1)

是的,使用Flex以horizo​​ntalCenter = 0和verticalCenter = 0为中心有一种更简单的方法。