Почему пользователям cocos2d-iphone следует избегать использования расширения файла @2x?

Cocos2d-iphone использует расширение -hd для изображений Retina (и других ресурсов). В руководстве по Cocos2d Retina лишь смутно говорится о "некоторых несовместимостях" относительно @2x:

Apple использует суффикс «@2x», но cocos2d не использует это расширение из-за некоторых несовместимостей. Вместо этого cocos2d имеет собственный суффикс: «-hd».

ВНИМАНИЕ: НЕ рекомендуется использовать суффикс «@2x». Apple обрабатывает эти изображения особым образом, что может привести к ошибкам в вашем приложении cocos2d.

Здорово. Я чувствую себя хорошо информированным.

Через отчет об ошибке двухлетней давности, связанный с @2x. Я получил ссылку на ветку форума, которая предположительно объясняет проблемы с @2x. Однако это не так. Единственные подсказки, которые я нашел, это то, что есть ошибки iOS (4.0/4.1), касающиеся @2x, которые, я полагаю, больше не актуальны. Возможно, я упустил какой-то важный аспект (были разговоры о кэшировании или проблемах с повторной загрузкой) — ветка все-таки очень длинная.

Я хотел бы знать, с какими конкретными проблемами может столкнуться разработчик cocos2d, если он(а) использует суффикс @2x для изображений вместо -hd?

Пожалуйста, приведите конкретные примеры того, что может пойти или действительно пойдет не так.


person LearnCocos2D    schedule 09.06.2012    source источник


Ответы (2)


Кажется, это основная причина по этой ссылке: http://www.cocos2d-iphone.org/forum/topic/12026

В частности, этот пост от riq:

Я не знаю, был ли исправлен initWithContentsOfFile, но в 4.0 он был сломан и не работал с расширениями @2x, ~iphone. imageNamed кэширует все загруженные файлы, поэтому он потребляет гораздо больше памяти, чем initWithContentsOfFile. Также расширение @2x что-то делает (я точно не знаю, что), но оно не работает нормально с cocos2d.

Еще один хороший момент: когда iPhone 4 только что был выпущен с дисплеем Retina, я уверен, что некоторые пользователи Cocos2D использовали его более старую версию, поэтому, когда пользователь использовал дисплей Retina на версии Cocos2D, которая не поддерживала это, вещи были в два раза больше, чем они должны были быть. Опять же, теперь это исправлено для большинства, если вы не используете ОЧЕНЬ раннюю версию Cocos2D.

Обзор, так что кажется, что основная проблема была с initWithContentsOfFile из iOS 4, но с тех пор они исправили это, потому что я использую именно этот API с Cocos2D 2.0-rc2 в своем приложении, и у меня нет никаких проблем вообще. Я использую все указанные Apple расширения для изображений, и все работает очень хорошо! :)

person SimplyKiwi    schedule 15.06.2012
comment
Спасибо, наконец-то разъяснения! Хотя с cocos2d это не работает нормально, мне все же кажется немного расплывчатым. Но это, наверное, только я. :) - person LearnCocos2D; 15.06.2012
comment
Достаточно ли мой ответ достоин награды? :P Клянусь, это вся информация, которая есть по этой теме! - person SimplyKiwi; 20.06.2012

Кажется, что это имеет историческую подоплеку.

Что делает использование -hd графики по-прежнему стоящим, так это то, что их загрузка не зависит от функциональности Apple, а скорее выполняется в коде фреймворка. Таким образом, -hd можно загрузить для iPad в режиме симулятора iPhone и использовать изображения с более высоким разрешением в режиме 2x.

Кроме этого, я не мог найти больше причин не использовать @2x, когда изучал это неделю назад.

Если вам нужны все подробности, вероятно, лучше всего отправить электронное письмо.

person Lennert    schedule 13.06.2012