2011-07-23 3 views
3

У меня есть игра с множеством анимированных «монстров». Анимация сделана с ~ 20 png изображениями для каждого монстра. Поэтому я использую UIImageView с установленным animationImages:.Производительность анимации iOS

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

Пожалуйста, дайте мне несколько советов - как я могу решить эту проблему?

ответ

2

Вы можете использовать CoreAnimation, как описано в уроке this. Это очень хорошо объясняет все методы, которые вы можете использовать для повышения производительности с того места, где вы находитесь (прежде всего, он не использует UIViews и стандарт animationImages, во-вторых, он использует спрайты (также называемые текстурными атласами), которые будут не только повысить производительность, а также значительно облегчит вашу жизнь, когда дело доходит до управления ресурсами изображения).

Также вы можете использовать CADisplayLink для создания game loop, в котором вы можете сделать все обновления. На SO есть несколько вопросов/ответов, которые описывают именно это.

+0

Использование CoreAnimation не решит проблемы с использованием ЦП, чтобы сделать это, вам нужно будет декодировать ваши изображения PNG на диск перед началом работы. Затем загрузите уже декодированные пиксельные данные непосредственно с диска, чтобы ограничить использование ЦП. Если у вас много и много анимаций сразу, то вы можете сделать их гладкими и мерцающими. – MoDJ

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