Расположение объектов в массиве / векторе в сетку - PullRequest
0 голосов
/ 21 января 2012

Я хочу упорядочить определенные объекты из вектора / массива в группу

В настоящее время я знаю, как это сделать во время создания объектов.

Вот функция сетки I 've создал:

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 ]

1 голос
/ 21 января 2012

hx3ds (ранее as3ds ) Майкла Бачинского поставляется с несколькими многомерными структурами, которые хорошо подходят и оптимизированы для данных типа сетки (таких как карта тайлов). Полный исходный код также доступен для этих структур , если вам интересно, что происходит под капотом, и есть PDF , который обеспечивает отличное введение в библиотеку.

0 голосов
/ 21 января 2012

Предполагается, что у вас есть одномерный массив, содержащий элементы 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);
          }
     }
}
...