as3获取调整大小的movieclip的宽度

时间:2012-04-21 01:23:54

标签: actionscript-3 flash width movieclip

我有一个影片剪辑,我在时间轴上手动缩放。

我现在正尝试使用动作脚本获取WIDTH和HEIGHT,以便我可以将另一个movieClip加载到其中并使其大小相同。

但是,当我执行以下代码时,我无法正确定位,因为比例为WIDTH,HEIGHT显示原始大小而不显示缩放大小的坐标。因此,当我将新剪辑放入其中时,我无法使其与重新缩放的剪辑具有相同的宽度和高度;

ScaledMC.addChild(myMC);
myMC.x = - ScaledMC.width /2; //Because the MC registration is in the center

可以使用一些代码来检测剪辑的BOUNDARIES的x和y位置以及它们在舞台上的位置。

感谢您的时间。

更新:4-25-12

我发布了我正在尝试做的完整代码,包括FLA。当你点击女孩我需要她加载到另一个电影剪辑。然而,影片剪辑是缩放的,所以当她被加载时,她的位置突然改变。我需要它看起来像她没有移动并停留在同一个地方。

import flash.geom.Rectangle;

var Girlx = Girl.x;
var Girly = Girl.y;

var b:Rectangle;
b = Room.ChalkBoard.getBounds(this);


trace(b);


Room.ChalkBoard.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag);

function fl_ClickToDrag(event:MouseEvent):void
{
    Room.ChalkBoard.startDrag();
}

stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop);

function fl_ReleaseToDrop(event:MouseEvent):void
{
    Room.ChalkBoard.stopDrag();
    b = Room.ChalkBoard.getBounds(this);
}



Girl.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event:MouseEvent):void
{
    //Room.ChalkBoard.scaleX = 1;
   // Room.ChalkBoard.scaleY = 1;
    Room.ChalkBoard.addChild(Girl);


    // I NEED TO KNOW HOW TO SCALE GIRL BACK TO SAME SIZE
    // EXAMPLE:

Girl.scaleY = 1 + Room.ChalkBoard.scaleY;

Girl.scaleX = 1 + Room.ChalkBoard.scaleX;
Girl.x = Girlx - b.x; /// This formula works if Room is at scaleX is 1;
Girl.y = Girly - b.y;  /// This formula works if Room is at scaleY is 1;


}

这里是FLA:http://www.EdVizenor.com/Girl.fla

2 个答案:

答案 0 :(得分:1)

如果您的问题是缩放动画片段并想要使用原始尺寸(我认为这就是您所说的),那么您可以尝试以下内容:

ScaledMC.addChild(myMC); 
myMC.x = - (ScaledMC.width/ScaledMC.scaleX) /2; 

请注意,我添加了一个缩放movieclip对象本身的因子

答案 1 :(得分:1)

您可以访问转换Matrix,该转换代表您使用IDE扩展的对象,以计算出您将其缩放的程度。您要查看的Matrix的关键属性是x-scale的a和y-scale的d

演示:

var matrix:Matrix = ScaledMC.transform.matrix;
trace(matrix.a, matrix.d);

然后,您可以使用这些值来扩展您的其他MovieClip,或者您需要做的任何事情。

奖金:有一个功能:

function getScale(target:DisplayObject):Object
{
    var mtx:Matrix = target.transform.matrix;

    return {
        scaleX: mtx.a,
        scaleY: mtx.d
    }
}


// Get scaleX of ScaledMC.
trace(getScale(ScaledMC).scaleX);