我有一个影片剪辑,我在时间轴上手动缩放。
我现在正尝试使用动作脚本获取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;
}
答案 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);