gpv123, мне мораль не позволяет чужую идею присваивать
А ежели по теме. Тут затронули тему построения объектов по сетке.
И я уже второй раз вижу предложенную Санычем модель построения с использованием одномерного массива. И хоть лопни в голове у меня никак не рисуется, как оную использовать в реальных условиях, где может понадобится сетка. Например реализация алгоритма поиска пути. Как в такой сетке перебрать и проверить только соседние ячейки от текущей.
Или такая модель построения используется только чисто в графических целях? UPD: Поправил немного пост, не правильный вопрос задал изначально)))
gpv123, это как раз ты приводишь пример вывода сетки в графических целях. С этим вопросов нет. Я имею ввиду другое.
Например есть сетка 100 x 100, каждая клетка имеет свойство проходима/непроходима. И стоит у меня юнит в какой-то клетке. Как мне имея сетку в одномерном массиве узнать какие вокруг него клетки проходимы, а какие нет.
Alazaur
Будь бобр, можешь в личку ответить, че мутишь? Потому что я такой движок мутил на C++, только у каждой клетки было 4 свойства - проходима ли каждая её граница (делал это, чтобы была возможность разноуровневых объектов и для спрыгивания). Поле было 50х50 и генерилось порядка минуты (на слабеньком компе).
Сорь за оффтоп, но да - в графических целях быстрее так, а в прогерских - никак нет.
Casperovskii писал(а):Alazaur
Будь бобр, можешь в личку ответить, че мутишь?
Ничего не мучу, это я привел просто как пример ))
gpv123, ты не подумай что я цепляюсь к этому способу построения или еще что))) Просто здесь ТС посоветовали построить сетку именно так несмотря на то что цели у него как раз таки программные. Вот я и думаю, если имеются такие возможности у "одномерной сетки" и они окажутся быстрее чем у "двухмерной" то я бы переписал некоторые алгоритмы из своих загашников)))
Воспринимайте массив в AS3 как объект и все значительно упростится. Одномерные они там или многомерные - это дело десятое. Важно представлять объект просто как пару "ключ => значение", в котором значением может быть что угодно, в том числе другой объект, с возможностью любого расширения своих значений. А, к примеру, в объекте Dictionary и ключом может быть что угодно. Если надо "быстрее", то используются типизированный массив Vector.<TYPE>, все элементы которого относятся к одному типу.
// запишем значения в массив var arr:Array = [new Sprite, new MovieClip]; arr[1].newProperty = "NEW MOVIECLIP PROPERTY"; for (var str:String in arr) { trace(str, " => ", arr[str]); } trace(arr[1].newProperty); // return // 0 => [object Sprite] // 1 => [object MovieClip] // NEW MOVIECLIP PROPERTY // ============================================== // теперь запишем то же самое, но с именованными ключами var obj:Object = { spr : new Sprite, mc: new MovieClip }; // или /* var obj:Object = { }; obj.spr = new Sprite; obj.mc = new MovieClip;*/ for ( str in obj) { trace(str, " => ", obj[str]); } obj.mc.newProperty = "NEW MOVIECLIP PROPERTY"; trace(obj.mc.newProperty); // return // spr => [object Sprite] // mc => [object MovieClip] // NEW MOVIECLIP PROPERTY