簡體   English   中英

as3獲取調整大小的movieclip的寬度

[英]as3 get width of resized 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

如果您的問題是您縮放動畫片段並想要使用原始尺寸(我認為這就是您所說的),那么您可以嘗試以下內容:

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

請注意,我添加了一個縮放movieclip對象本身的因子

您可以訪問轉換Matrix ,該Matrix表示您使用IDE縮放的對象,以計算出您縮放的對象數量。 的關鍵性能Matrix ,你想看看是a用於X規模和d y的規模。

演示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM