2012-01-21 10 views
0

は、私は、オブジェクトの作成中にこれを行う方法を知っています。ここで配置オブジェクト

は、私が作成したグリッド機能です:今、私はそれを行うのですかどのように、グリッドにして配列/ベクタ内のオブジェクトを配置するのと同じロジックを適用することができるようにしたい

function ArrangeInGrid(uiRow:uint, uiCol:uint, iOffsetX:int, iOffsetY:int):void 
{ 
    for(var i:uint = 0; i < uiRow; ++i) 
    { 
      for(var j:uint = 0; j < uiCol; ++j) 
      { 
       var card:MovieClip = new MovieClip(); 
       card.x += iOffsetX + i * card.width; 
       card.y += iOffsetY + j * card.height; 
       stage.addChild(card); 
      } 
    } 
} 

(もしあれば)もっと効率的な方法を提案してください。

注:

  • 私はそれがグリッドを持つことができますどのように多くの行と列に柔軟になりたいです。

  • 私が使っているベクターにはすでにカードが入っています。

  • 私は手作業でカードを作成した方法のベクトルcuzにカードを押し込むことはできません。

詳細情報が必要な場合はお知らせください。


ありがとうございます。

答えて

1

hx3ds(旧:as3ds)マイケルバシンスキーには、グリッドタイプのデータ(タイルマップなど)に最適で最適化された2つのMultiDimensional構造があります。 Full source code is also avaliablethese structuresの場合、フードの下で何が起こっているかに関心があり、PDFがあり、ライブラリの概要を紹介しています。

0

あなたには、uiRow x uiCol要素を含む1次元配列があるとします。

function ArrangeInGrid(cards:Vector.<MovieClip>, uiRow:uint, uiCol:uint, iOffsetX:int, iOffsetY:int):void 
{ 
    var arrayIndex:uint; 

    for(var i:uint = 0; i < uiRow; ++i) 
    { 
      for(var j:uint = 0; j < uiCol; ++j) 
      { 
       var card:MovieClip = cards[arrayIndex++]; 
       card.x += iOffsetX + i * card.width; 
       card.y += iOffsetY + j * card.height; 
       stage.addChild(card); 
      } 
    } 
} 
関連する問題