所以我很难弄清楚这一点。我想在舞台的右下角进行舞台和舞台。
box.x = 100
box.y = 100
this.addChild(box);
从舞台的左下角是100px。
我尝试了
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.BOTTOM_LEFT;
,但它不起作用。我想念什么吗?
您对"制作MoviecClip并在左下方进行注册点?并在此电影剪辑中添加内容"的评论无疑是一种方法。可能是最简单的第一种方法,它可以让您轻松按需移动并具有任何包含的对象更新。
另一种方法是创建一个点对象并引用该点以定位所有内容。类似:
var origin:Point = new Point(0, this.stage.stageHeight);
,然后是您的盒子:
box.x = origin.x + 100;
box.y = origin.y - 100;
但是,如果要更改此信息,则必须添加一些代码并更新现有对象的所有位置。
如果您真的坚持这一点 y向上并且-y在舞台上向下走,则可以使用一个技巧,但是可能会有巨大的高架头脑成本:
使用第一种方法,但在放在左下角的位置之前,请给MovieClip进行负100 y的缩放,尽管现在一切都会颠倒,因此您必须处理/因素,因此不建议使用。但是只是把它扔到那里。
您还可以创建一个静态方法并在需要时始终调用它,例如:
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);