Лучший способ удалить спрайты из массива NSMutable на основе близости к другому спрайту? - PullRequest
0 голосов
/ 25 августа 2010

У меня есть NSMutableArray of Sprites, и я хочу удалить несколько из них в зависимости от их близости к другому спрайту.Скажем, у меня есть 10 спрайтов, и я хочу удалить первые 3, которые ближе всего к другому спрайту.

Я не могу придумать изощренный эффективный способ сделать это, все, что я до сих пор придумалкажется слишком запутанным и неэффективным.Есть идеи?

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Предполагая, что нет специальных структур данных или порядка, вы можете выполнять итерацию по каждому элементу вашего NSMutableArray, отслеживая индексы и расстояния 3 ближайших спрайтов во втором NSMutableArray, упорядоченном по возрастанию расстояния. Всякий раз, когда вы находите спрайт ближе, чем третий элемент вашего временного массива, вы отбрасываете третий элемент и вставляете индекс и расстояние этого нового спрайта в массив. Это немного сложно, но должно быть довольно эффективно.

Если вы хотите получить фантазию, вы можете использовать более сложную структуру данных для объединения спрайтов в зависимости от их местоположения. Для 10 спрайтов это кажется намного более беспокойным, чем стоит.

0 голосов
/ 25 августа 2010

Если вы можете, вы также можете сохранить этот массив спрайтов отсортированным по расстоянию.Это не сработает в игре, где на экране все постоянно движется, но может работать и в других ситуациях.Тогда вы можете просто взять первые три элемента массива.(Предполагая, что они отсортированы по расстоянию, сначала самое длинное расстояние)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...