Objective C iPad Анимация с большими изображениями - Какой метод использовать? - PullRequest
3 голосов
/ 16 августа 2011

Я пытаюсь создать приложение для погоды на iPad, но, похоже, мне нужна помощь в анимации. Скажем, я анимирую радар, поэтому исходные файлы радара имеют изображения в 10 gif / jpeg с размером 900x700 пикселей. Я попробовал технику анимации UIImage, используя учебник здесь:

http://www.icodeblog.com/2009/07/24/iphone-programming-tutorial-animating-a-game-sprite/

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

Я смотрел на других, таких как Core Animation с использованием спрайтов и Cocos2D со спрайтами. Может ли кто-то указать в правильном направлении лучший способ оживить эти большие изображения? (имейте в виду, что эти изображения являются динамическими и часто изменяются, поэтому спрайты должны быть воссозданы на сервере и извлечены из iPad для анимации). Спасибо

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

OpenGL создает только текстуры с размерами со степенью 2. Для ваших изображений это 1024x1024, что составляет мегабайт памяти на изображение.Тем не менее, это не должно быть проблемой для iPad.

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

Во-вторых, я рекомендую использовать Cocos2D хотя бы для простой обработки текстур и кэширования.Бросьте изображения в CCAnimation, вставьте его в CCRepeatForever, запустите его с CCSequence.Когда вы закончите, нажмите CCTextureCache, чтобы выпустить неиспользуемые текстуры.

В-третьих, уменьшите частоту кадров анимации до 30 или меньше (если только для этой анимации).Это может быть iPad, но вы делаете приложение погоды.Не видеоигра.

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

1 голос
/ 16 августа 2011

Попробуйте разбить анимационное изображение на более мелкие части и анимировать их, рассматривая каждый компонент как спрайт. Было бы лучше, если бы вы в основном использовали код (CoreGraphics) и рисовали свой радар «вручную», а не просто использовали изображения, как если бы они были анимированными GIF-файлами.

...