2012-04-21 15 views
0

タイムラインで手でスケールしたムービークリップがあります。as3サイズ変更されたムービークリップの幅を取得

私は今、アクションスクリプトでWIDTHとHEIGHTを取得しようとしていますので、別のムービークリップをロードして同じサイズにすることができます。

しかし、次のコードを実行すると、スケールがWIDTHでHEIGHTが元のサイズを表示し、スケールされたサイズの座標を表示しないため、正しく配置できません。だから私はそれの中に新しいクリップを配置すると、再スケールされたクリップと同じ幅と高さにすることはできません。

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

作業は約それらがステージ上に配置されているクリップと場所の境界のxとyの位置を検出するためのいくつかのコードであってもよいです。

お時間をいただきありがとうございます。

UPDATE:4-25-12

私は私がやろうとしてFLAを含めています何の完全なコードを掲示しています。女の子をクリックすると、彼女を別のムービークリップに読み込む必要があります。しかし、ムービークリップはスケーリングされているので、彼女の位置が突然変化します。彼女が動かずに同じ場所にいるように見えるようにする必要があります。 HERE

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 IS:http://www.EdVizenor.com/Girl.fla

答えて

1

あなたの問題はあなたがムービークリップをスケーリングして元の寸法を(私はこれがあなたが言っていることだと思います)を使用したいということであれば、あなたのような何かを試みることができます以下:あなたはtransformatioにアクセスすることができ、私はムービークリップオブジェクト自体

+0

:機能を持っています。どうもありがとう。また、私はタイムラインでそれを手動でスケーリングしました。それが私の最初の文章でした。おそらく私は間違った用語を使用しています。 –

+0

Ohh ok。私はあなたが何を意味していたのか分からなかったが、今理解している。だから、スケールプロパティを変更しています(scaleXとscaleYの両方があります)。私は自分の答えを編集して、どのように縮尺を変えているかを質問する部分を削除しました。ありがとうマーティ。 –

1

のスケーリングのための係数で追加

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

お知らせn あなたがスケーリングした分を計算するために、IDEでスケーリングしたオブジェクトを表す。あなたが見たいMatrixのキープロパティは、xスケールの場合は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

私の主題は明確ではないと思う。ポストでは私の質問をより明確にしています。私は、 "Girl"というムービークリップを拡大して、ムービークリップ内の同じ位置に保持する必要があります。実際には別のムービークリップの内側に移動します。しかし、彼女は同じ場所にとどまっています。私が言えることは、上記のFLAをダウンロードして実行し、その少女をクリックすることです。彼女は動いており、彼女は縮尺のムービークリップの中に置かれていても同じ場所にとどまることになっています。 –

+0

@PapaDeBeau女の子の体重を調整するとき、彼女は固定された左上の位置から離れていくことを意味していますか?その場合、あなたの問題は完全に左上ではないシンボルに割り当てられた登録ポイントと完全に関連しています。 – Marty

+0

はい、彼女は修正したままにしておきます。私は彼女を固定位置に保つことができますが、問題は、彼女がロードされているクリップがスケーリングされているため、スケーリングされてそれに応じて移動するためです。スケールが原因です。 DEMO:http://edvizenor.com/Gril.html –

関連する問題