如何使对象位置从左下角开始

时间:2014-01-24 04:45:05

标签: actionscript-3

所以我很难搞清楚这一点。 我试图在舞台的右下角制作stage.y和stage.y,所以每当我添加这样的时候

        box.x = 100
        box.y = 100
        this.addChild(box);

从舞台的左下角开始是100px。

我试过

        stage.scaleMode = StageScaleMode.NO_SCALE;
        stage.align = StageAlign.BOTTOM_LEFT;

但它没有用。 我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

您的评论“制作一个moviecclip并将其注册点放在左下角?并在此影片剪辑中添加内容”当然是一种方法。可能是最容易想到的第一种方法,让您可以根据需要轻松移动它并更新任何包含的对象。

另一种方法是创建一个点对象和引用来定位所有东西。类似的东西:

var origin:Point = new Point(0, this.stage.stageHeight);

然后换个方框:

box.x = origin.x + 100;
box.y = origin.y - 100;

但是,如果您想更改此设置,则必须添加一些代码并更新现有对象的所有位置。


如果你真的坚持认为+ y向上并且-y在舞台上向下,你可以使用一个技巧,但可能会有巨大的开销心理成本:

使用第一种方法,但是在放置在左下角之前给动画片块施加负100度缩放注意现在所有内容都是颠倒的,所以你必须处理/影响副作用。不推荐,但只是扔掉那里。

答案 1 :(得分:1)

您还可以创建一个静态方法,并在需要时随时调用它,例如:

public class DisplayObjectUtils
{
    public static function setRegPoint(obj:DisplayObjectContainer, newX:Number, newY:Number):void
    {
        var bounds:Rectangle = obj.getBounds(obj.parent);
        var currentRegX:Number = obj.x - bounds.left;
        var currentRegY:Number = obj.y - bounds.top;

        var xOffset:Number = newX - currentRegX;
        var yOffset:Number = newY - currentRegY;

        obj.x += xOffset;
        obj.y += yOffset;

        var totalChildren:uint = obj.numChildren;
        for (var i:int = 0; i < totalChildren; i++)
        {
            obj.getChildAt(i).x -= xOffset;
            obj.getChildAt(i).y -= yOffset;
        }
        bounds = null;
    }
}

要使用,请尝试以下方法:

//register point in the center of the object //box.width >> 1, box.height >> 1
DisplayObjectUtils.setRegPoint(box, box.width >> 1, box.height >> 1);