将数组/向量中的对象排列到网格中

时间:2012-01-21 08:50:59

标签: arrays flash actionscript-3 vector grid

我想将矢量/数组中的某些对象排列成网格

目前,我知道如何在创建对象期间执行此操作。

这是我创建的网格功能:

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

现在我希望能够应用将数组/向量中的对象排列到网格中的相同逻辑,我该怎么做?

或者建议一种更有效的方法(如果有的话)。

注意:

  • 我希望网格可以灵活设置多少行和列。

  • 我正在使用的矢量中已经有卡片。

  • 我不能把卡片按照我手动创建卡片的方式推送到卡片中。

如果您需要更多信息,请与我们联系。


谢谢。

2 个答案:

答案 0 :(得分:1)

Michael Baczynski的

hx3ds(以前称为as3ds)附带了几个MultiDimensional结构,这些结构非常适合并针对网格类型数据进行优化(例如平铺贴图)。对Full source code is also avaliable these structures PDF你应该对引擎底下发生的事情感兴趣,并且有一个{{3}}可以很好地介绍图书馆。

答案 1 :(得分:0)

假设你有一个包含uiRow x uiCol元素的一维数组。

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