所以我很难搞清楚这一点。 我试图在舞台的右下角制作stage.y和stage.y,所以每当我添加这样的时候
box.x = 100
box.y = 100
this.addChild(box);
从舞台的左下角开始是100px。
我试过
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.BOTTOM_LEFT;
但它没有用。 我错过了什么吗?
答案 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);