2011-09-02 17 views
0

次のコードを使用して、DisplayObjectの位置を中央に設定します。ActionscriptでDisplayObjectsの位置を管理する方法は?

obj.x = (screen_width - obj.width)/2; 

または

obj.x = (parentObj.width - obj.width)/2; 


そして、私は縦2つのオブジェクトを表示するには、次のコードを使用します。

obj2.x = obj1.width + interval 


そして、私は縦2つのオブジェクトを表示し、中央にそれらの位置を設定するには、次のコードを使用します。

var obj3:Sprite = new Sprite; 

obj3.addChild(obj1); 
obj3.addChild(obj2); 

obj2.x = obj1.width + interval; 
obj3.x (screen_width - obj3.width)/2; 


上記のコードは、DisplayObjectの位置を管理するための良い方法はありますか?
これを行うためのより簡単な方法はありますか?

+0

フレックスを使用していない場合は、 – divillysausages

+0

@divillysausagesにあります。無料のFlex SDKとテキストエディタを使用しています。そして私はコマンドラインでactionscriptをコンパイルします。 私の質問のコードが私にとって唯一の選択肢であることを意味しますか? –

+1

いいえ、mxmlやHGroupやVGroupなどのフレックスコンポーネントを使用して、設定を使用してflexを使用することはできます。これらのコンポーネントは自動的に内部のオブジェクトをレイアウトする方法を提供します。あなたが純粋なAS3を使用しているのであれば(あなたがそうだと思いますが)、あなたはこれをすべて手作業で行います。これはあなたがやっていることであり、細かいことです。 – divillysausages

答えて

1

また、HGroupまたはVGroup(またはFlex 3を使用している場合はHBoxとVBox)に追加することもできます。しかし、これらの精巧なオブジェクトを使用せずに縦型レイアウトを実装する場合は、通常は "update()"メソッドを作成します(次のコードには構文エラーが含まれている可能性があります)。

private function update():void 
{ 
    // The vertical gap between elements 
    var gap:int = 4; 

    // The cumuled height 
    var cumuledHeight:Number = 0; 

    // The number of elements 
    var n:int = numElements; 

    // The element at each loop 
    var o:IVisualElement; 
    for (var i:int = 0; i<n; i++) { 

     // Gets the element 
     o = getElementAt(i); 

     // Sets its vertical position 
     o.y = cumuledHeight + gap*i; 

     // Updates the cumuled height 
     cumuledHeight += o.height; 
    } 
} 
1

はい、Flexを使用してhorizo​​ntalCenter = 0およびverticalCenter = 0で中央に配置すると簡単な方法があります。

+0

あなたの答えをありがとう! しかし、私はSpriteまたはDisplayObjectにはhorizo​​ntalCenterとverticalCenterというプロパティがないと思います。 –

+0

純粋なASかFlexですか?フレックスの場合、代わりにFlexSpriteを使用できます。 –

+0

ご返信ありがとうございます。 実際、純粋なASが何で、Flexが何であるかわかりません。 しかし、私はActionScriptとテキストエディタだけを使用し、Flex SDKのコマンドラインで '.asファイル 'をコンパイルしているので、純粋なASを使用していると思います。 –

関連する問題