CCSpriteBatchNode или NSMutableArray - PullRequest
       3

CCSpriteBatchNode или NSMutableArray

0 голосов
/ 04 февраля 2012

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

Я смотрел на CCSpriteBatchNode и NSMutableArray, но я не уверен, какой использовать.

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

С другой стороны, если бы я имел NSMutableArray и добавил элементы какЯ нуждался в них и обновил несколько избранных, которые существуют в настоящее время, будет ли это более эффективным.

Таким образом, моей основной проблемой является выбор между NSMutableArray или CCSpriteBatchNode и поиск наиболее эффективного в создании многочисленных постоянно обновляемых объектов.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 февраля 2012

Узлы, полностью находящиеся за пределами экрана, быстро удаляются, и если вы установите для свойства visible значение NO, оно будет немедленно удалено, что означает, что в основном не снижается производительность для невидимых узлов.

Кэширование многих объектов - этона самом деле быстрее, чем создавать и выпускать их во время выполнения, даже если это означает, что у вас всегда будет около 400 из них в памяти.Для этого требуется максимум 200 КБ памяти и избегаются частые циклы выделения / освобождения, которых вы должны избегать в максимально возможной степени, особенно на устройствах 1-го / 2-го поколения.

0 голосов
/ 04 февраля 2012

Если вы используете Cocos, CCSpriteBatchNode будет намного лучше, если вы планируете отображать на экране много своих объектов одновременно.CCSpriteBatchNode только «рисует» объект один раз, а затем неоднократно распространяет его в вашем представлении.Это экономит много ценных ресурсов процессора.Вот почему CCSpriteBatchNode используется с маркерами, потому что обычно их много на экране.

Кроме того, если ваши объекты появляются часто, даже если на экране сразу один или два объекта, CCSpriteBatchNode будет использовать кэшированныйрисование, а не перерисовка, при этом сохраняя ресурсы процессора.

Я рекомендую придерживаться объектов Cocos, когда это возможно, поскольку они предназначены для повышения производительности по таким причинам по сравнению с собственными объектами Apple, такими как NSMutableArray.

Однако, если вы настаиваете на использовании NSMutableArray, все равно используйте CCArray, если вы используете Cocos.Но CCSpriteBatchNode, вероятно, будет вашим лучшим выбором.

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