![]() |
|
||||||||||
|
|||||
|
При работе над игрой "Точки" столкнулся с проблемой. Точки окружения хранятся в массиве, но они расположены неупорядоченно. При отрисовке получается что линия идет не по контуру, а соединяет точки как попало.
Вот скриншот результата Как упорядочить массив чтобы контур отрисовывался правильно? Или как этого добиться непосредственно при отрисовке, не сортируя массив заранее? Спасибо (: Добавлено через 36 минут Я наваял скрипт, но он глючный страшный. Ничего лучше мне в голову не идет, для этой задачи. private static function sortArray(arr:Array):Array { var res:Array = [];//get the firs element of the source object res.push( { "x":arr[0].x, "y":arr[0].y } );// Берем первый элемент массива, от него ведем обход var pnts:Array = [];// двухмерный массив заполненный определенными значениями (-1) for (var i:int = 0; i < result.size[0]; i++) { pnts.push([]); for (var j:int = 0; j < result.size[1]; j++) { pnts[i].push( -1); } } for each(var obj in arr) { pnts[obj.x][obj.y] = 5;// Там где есть точки, ставим 5 } var found:Boolean; var cobj:Object; var poiarr:Array;// массив окружающих точек for (var i = 0; i < (arr.length - 1); i++) { found = false; cobj = res[i];// Точка в обработке poiarr = [[cobj.x, cobj.y - 1], [cobj.x + 1, cobj.y - 1], [cobj.x + 1, cobj.y], [cobj.x + 1, cobj.y + 1], [cobj.x, cobj.y + 1], [cobj.x - 1, cobj.y + 1], [cobj.x - 1, cobj.y], [cobj.x - 1, cobj.y - 1]];// Заполняем массив окружающих точек for each(var ppp in poiarr) {// Перебираем эти точки if ((ppp[0] > 0) && (ppp[1] > 0) && (ppp[0] < result.size[0]) && (ppp[1] < result.size[1])) {// проверяем выход за границы if ((pnts[ppp[0]][ppp[1]] == 5) && (!found)) { res.push( { "x":ppp[0], "y":ppp[1] } ); found = true; };// Если точка найдена, добавляем ее в новый массив } } } return(res); } |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
А какого они не упорядочены? Когда определяется, что точки составляют обход, то как раз и должен создаваться упорядоченный массив (или его легко создать).
Ну можно там взять верхнюю точку и обойти, начав с неё, по часовой стрелке остальные, но зачем?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Действительно. Как Вы узнаете, что контур замкнутый?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|