Первый совет: смени дизайн.Если это не ваше, при необходимости используйте тупую силу.Это вряд ли будет работать достаточно хорошо.
Вам придется часто загружать и выгружать текстуры во время анимации, чтобы контролировать потребление памяти.Это ограничит достижимую частоту кадров анимации.Я подозреваю, что это будет в лучшем случае 30-40 кадров в секунду на устройствах iPad и 4-го поколения, вероятно, ужасно медленное на устройствах 1–3-го поколения.
Лучшая оптимизация, которую вы можете сделать, - это не использовать экспортируемые во Flash полноэкранные текстуры.В основном то, что делает Flash, это анимирует все для вас, а затем выводит полноэкранное изображение для каждого кадра анимации. Это худшее из возможных решений для анимации чего-либо для мобильных устройств.
Вместо этого, воссоздайте все анимации в cocos2d, используя отдельные изображения и действия cocos2d, чтобы создать ту же анимацию или ту, которая достаточно близка.,Это больше кода, но он будет работать намного лучше.Могут быть такие инструменты, как LevelHelper, которые могут вам помочь, но я не уверен, что они могут показать вам предварительный просмотр анимации в реальном времени.Есть также инструмент , который может импортировать анимацию временной шкалы Flash , но я не могу сказать, насколько хорошо он работает или работает ли он вообще.
Использование Texture Packer длясоздавать текстурные атласы из отдельных изображений для экономии памяти и ускорения рендеринга, особенно в сочетании с CCSpriteBatchNode.Plus Texture Packer позволяет экспериментировать с различными форматами текстур и экспортировать изображения с разрешением SD, если вы хотите поддерживать устройства, не поддерживающие Retina.
Потому что еще одна хорошая оптимизация заключается в том, чтобы уменьшить глубину цвета в битахвозможный.Если вы переходите от 32-битного к 16-битному режиму (RGBA4444 или RGBA5551 или RGB565 в зависимости от того, какой тип прозрачности вам нужен), вы уже вдвое сократили потребление памяти, а скорость рендеринга также немного увеличилась.
Если возможно, используйте один из сжатых форматов PVR, в частности для спрайтов, которые всегда движутся, потому что ухудшенное качество изображения будет практически невозможно заметить с движущимися спрайтами.
Однако, поскольку вы упоминаете градиенты, на них больше всего повлияет уменьшенная глубина цвета в битах.Если это простой градиент, вы можете заменить градиентный фон на CCLayerGradient , чтобы сохранить память фонового изображения.
Наконец, вы сможете использовать меньшие изображения и масштабировать их.Особенно для прозрачных изображений тот факт, что при увеличении масштаба изображение будет выглядеть размытым, может быть полезным.
Подводя итог:
- не используйтеполноэкранные текстуры, экспортируемые Flash (очень плохая идея), по крайней мере, попробуйте импортер анимации временной шкалы Flash для cocos2d
- , используйте отдельные изображения, анимированные с помощью функций cocos2d
- , используйте атласы текстур (и пакетирование спрайтов)чтобы уменьшить потребление памяти, увеличьте скорость
- максимально уменьшите глубину цвета в битах, опять же, уменьшите память, увеличьте скорость
- экспериментируйте с форматом сжатия PVR с потерями для быстрых / постоянно движущихся изображений
- используйте меньшие изображения и увеличивайте их