Масштабирование Core Animation странно медленно? - PullRequest
3 голосов
/ 08 ноября 2010

Как часть игры для iPhone, у меня есть кнопки, которые немного растут при нажатии на них и уменьшаются при отпускании (как способ реагирования на ввод пользователя).Ответственный код выглядит следующим образом:

-(void) magnifyButton: (CALayer *) button
{
 button.transform = CATransform3DScale(button.transform, buttonPressScale, buttonPressScale, 1.0);
}

-(void) reduceButton: (CALayer *) button
{
 button.transform = CATransform3DScale(button.transform, 1.0 / buttonPressScale, 1.0 / buttonPressScale, 1.0);
}

Это прекрасно работает.Но если я нажимаю кнопку (каждая из которых представляет собой небольшое изображение на CALayer), анимация, происходящая в фоновом режиме (в представлении OpenGL), замедляется до 10 FPS.Это кажется абсурдным для меня.Я обнаружил похожую проблему здесь , но, поскольку я использую неявную анимацию, я не уверен, как мне поступить в этом случае с оптимизацией.

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

Ответы [ 2 ]

2 голосов
/ 10 июня 2011

Перед началом анимации, чтобы избавиться от необходимости визуализировать CALayer для каждого кадра, замените его изображением самого себя:

button.shouldRasterize = YES;

Когда анимация закончится, установите свойство обратноNO.

0 голосов
/ 30 марта 2011

Смешивание UIKit и OpenGL возможно, но ухудшит производительность. Вещи, которых следует избегать при объединении двух, - это прозрачность и преобразования. Вероятно, нет простого способа оптимизировать это, лучше всего использовать кнопки в OpenGL.

На сайте Gamesfromwithin.com есть несколько хороших статей о комбинировании UIKit и OpenGL. Эта статья содержит раздел о производительности (хотя решения не существует): http://gamesfromwithin.com/using-multiple-opengl-views-and-uikit

Также ознакомьтесь с его презентацией о сочетании двух: http://gamesfromwithin.com/wp-content/uploads/2010/03/GDC10_uikit_opengl.pdf

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