2012-04-21 101 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

相關問題