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

发布于 2024-12-02 17:11:30 字数 563 浏览 1 评论 0原文

我使用以下代码将 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 位置的好方法吗?
有更好、更简单的方法吗?

I use the following code to set position of a DisplayObject to center.

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

or

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

And I use the following code to show 2 objects vertically.

obj2.x = obj1.width + interval

And I use the following code to show 2 objects vertically and set the position of them to center.

var obj3:Sprite = new Sprite;

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

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

Are the above codes a good way to manage positions of DisplayObjects?
Are there better and simple ways to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抽个烟儿 2024-12-09 17:11:30

您还可以将它们添加到 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;
    }
}

Well you can also add them into a HGroup or a VGroup, (or HBox and VBox if you are using Flex 3). But when I want to implement a vertical layout without using these kind of elaborate objects, I usually create a "update()" method (note that the following code may contain syntax errors : it is just provided as an algorithm example):

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;
    }
}
何处潇湘 2024-12-09 17:11:30

是的,有一个更简单的方法,即使用 Flex 将其水平中心=0 和垂直中心=0 居中。

Yes, there is a simpler way by using Flex to center it with horizontalCenter=0 and verticalCenter=0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文