0

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

我现在正在尝试使用动作脚本获取宽度和高度,以便我可以将另一个电影剪辑加载到其中并使其大小相同。

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

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

解决方法可能是一些代码来检测剪辑边界的 x 和 y 位置以及它们在舞台上的位置。

谢谢你的时间。

更新:2012 年 4 月 25 日

我正在发布我正在尝试做的事情的完整代码,包括 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

4

2 回答 2

1

您可以访问Matrix表示您使用 IDE 缩放的对象的转换,以计算出您缩放了多少。Matrix您要查看的关键属性是ax-scale 和dy-scale。

演示:

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);
于 2012-04-26T00:19:46.457 回答
1

If your problem is that you scale the movieclip and want to use the original dimensions (I think this is what you are saying) then you could try something like the following:

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

Notice that I added in a factor for scaling of the movieclip object itself

于 2012-04-21T01:45:38.617 回答