2015-07-05 3 views
2

SKNode имеет метод nodesAtPoint, который возвращает массив дочерних узлов, которые пересекают данную точку. Является ли порядок элементов в таком массиве детерминированным (например, путем рисования)?Гарантирован ли заказ SKNode.nodesAtPoint?

Я не смог найти ответ в документации, поэтому, вероятно, ответ «нет», но я хотел бы подтвердить.

+0

Я бы предположил, что они упорядочены по положению z, но если он не задокументирован, я не буду делать ничего, что зависит от конкретного порядка. – dan

+3

Запустите тест самостоятельно и узнайте. – sangony

+0

Достаточно просто отсортировать массив в 'zPosition' порядке – 0x141E

ответ

1

Нет, Sprite Kit не учитывает положение z при пересечении дерева узлов (определенно по соображениям производительности). Вы можете легко это увидеть, добавив несколько узлов в сцену в порядке, а затем изменив z-позиции. Порядок всегда будет основываться на позиции узла внутри дерева узлов, а не на позиции z.

+0

Спасибо. Я сам сделал несколько лучших тестов, и кажется, что порядок не всегда существует. – courteouselk

+0

@ AntonBronnikov Yup, и если у вас есть узлы с детьми, он становится еще более непредсказуемым. –

+0

Это означает, что есть некоторый хеш-стол, который, вероятно, используется под водой, какой-то словарь, я думаю. Во всяком случае, мне кажется, что нужно сортировать по массиву результатов. – courteouselk

Смежные вопросы