2012-04-21 38 views
0

我有一个在时间线上手动缩放的影片剪辑。as3获取调整大小的动画片段的宽度

我现在正在尝试使用动作脚本来获取WIDTH和HEIGHT,这样我就可以将另一个影片剪辑加载到它中并使其尺寸相同。

但是,当我做下面的代码我不能正确定位它,因为规模是宽度和高度显示原始大小,并没有显示比例大小坐标。所以当我把新的剪辑放在它里面的时候,我不能使它与重新缩放的剪辑的宽度和高度相同;

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

一个解决可能是一些代码来检测夹和它们的位置在舞台上的界限的x和y位置。

谢谢你的时间。

更新:12年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

回答

1

如果你的问题是,你缩放影片剪辑,并希望使用原始尺寸(我认为这是你说的话),那么你可以尝试一些像以下内容:我的一个因素增加了对影片剪辑对象本身

+0

我会尝试。非常感谢。我还用手在时间轴上缩放了它。这是我的第一句话。也许我正在使用错误的术语。 – 2012-04-21 01:51:44

+0

哦,好的。我不确定你的意思,但我现在明白了。所以是的,你正在改变其规模属性(有scaleX和scaleY)。我编辑了我的答案,以删除部分问你如何缩放。 – 2012-04-21 01:54:38

1

可以访问转化On的比例

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

公告代表您用IDE缩放的对象,以计算出您已将其缩放了多少。您要查看的Matrix的主要属性为y尺度的a和y尺度的d

演示:

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

然后,您可以使用这些值来缩放你的额外的影片剪辑,或任何你需要做的。

奖励:有一个函数:

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); 
+0

谢谢Marty。我认为我的主题不清楚。在这篇文章中,我的问题更加明确。我需要缩放名为“女孩”的影片剪辑,并将其保持在她所在影片剪辑的相同位置,但实际上,她将其移至另一个影片剪辑内。但她住在同一个地方。我能说的最好的就是下载FLA并运行它并点击女孩。她的动作和她应该留在同一个地方,即使她被放置在一个缩放的电影剪辑。 – 2012-04-26 00:42:48

+0

@PapaDeBeau你的意思是说,当你缩放女孩时,她正在摆脱固定的左上角位置?如果是这样,您的问题纯粹与您分配给该符号的注册点不完全左上角有关。 – Marty 2012-04-26 00:44:53

+0

是的,她应该保持固定。我可以让她保持在固定的位置,但问题是因为她被加载到的剪辑已被缩放,因此它也被缩放并相应地移动。规模造成了这个问题。 DEMO:http://edvizenor.com/Gril.html – 2012-04-26 00:46:44