2010-11-19 9 views
0

ステージのサイズ変更時に大きなムービークリップ(幅1400ピクセル)をステージの中央に配置したいと考えています。特定のイベントの右にこの大きなムービークリップが移動するので、私はこのようなコードを使用することはできません。 Actionscript 3ステージ上の移動オブジェクトのセンタリング

currentPage.x = ((stage.stageWidth/2) - (currentPage.width/2)) 

は多分使用する方法があり、その0(舞台「ビューポートの左側)からのオフセットとセンタリングでそのオフセットを使用しますか?

ムービークリップはxだけが変更されます。

答えて

0

オブジェクトのサイズを変更すると、スケールが変更されたと言えるでしょう。私たちがパーセンテージで働くことができるので、スケールは素晴らしいです。パーセンテージの変化が与えられた場合、同じ変更を他のオブジェクトに適用して相対位置を得ることができます。ここをクリックしてください:

var previousStageWidth:Number; 

public function handleResize():void { 
    //calculate the difference in stage with as a percentage 
    var widthScale:Number = previousStageWidth/stage.stageWidth; 

    //scale the x value by the same amount 
    myDisplayObject.x *= widthScale; 

    //update the previous value for the next resize 
    previousStageWidth = stage.stageWidth; 
} 

うまくいけばうまくいきます。

+0

この方法では、各サイズ変更時にエラーが蓄積されます。 – alxx

+0

どのようなエラーがありますか?質問者のために説明してください。 –

+0

いいえ、移動するオブジェクトには関係ありません。忘れてください :) – alxx

0

すべてのコンテンツにコンテナスプライトを使用することをお勧めします。コンテナの内部では、シーンが常に400x300(または他の固定サイズ、必要なアスペクト比にかかわらず)のようにすべてが測定されます。シーンのサイズが変更されたとき、私はサイズ変更や内部に収まるようにだけコンテナを中心にしています:

//not really tested because my real code is more complex, so watch out... 
var bounds:Rectangle = container.getRect(null); 
//scale factor to fit inside 
var scaleFactor:Number = Math.min(stage.stageWidth/bounds.width, stage.stageHeight/bound.height); 
container.scaleX = container.scaleY = scaleFactor; //scaling 
//centering 
container.x = (stage.stageWidth - container.width) * 0.5; 
container.y = (stage.stageHeight - container.height) * 0.5; 

この方法であなたは、コンテナ内だけではなく1をクリップの任意の数を処理することができます。コンテナはすべての画面領域を使用するのではなく、縦横比を保持します。すべての画面スペースを使いたい場合は、ステージのダイナミックなレイアウトを考えなければなりません。

関連する問題