0

ステージのサイズ変更時に、大きなムービークリップ(幅1400ピクセル)をステージの中央に配置したいと思います。この大きなムービークリップは特定のイベントで右に移動するため、次のようなコードは使用できません。

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

0からのオフセット(ステージの「ビューポート」の左側)を使用して、そのオフセットを中央揃えに使用する方法はありますか?

ムービークリップはxでのみ変更されます。

4

2 に答える 2

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

うまくいけば、それはあなたのためにうまくいくでしょう。

于 2010-11-19T04:06:13.747 に答える
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つだけでなく、コンテナ内の任意の数のクリップを処理できます。コンテナはすべての画面スペースを使用するわけではありませんが、アスペクト比は保持されます。すべての画面スペースを使用したい場合は、ステージの動的なレイアウトを考える必要があります。これは、自分だけが適切に実行できることです。

于 2010-11-19T09:09:57.583 に答える