2009-10-15 2 views
1

Мне нужно играть в фреймворки. Я попробовал UIImageView с animationImages, но это не дает мне никакого контроля над моей анимацией. Я не могу приостановить его, я не могу замаскировать его, я не могу знать текущий кадр и т. Д.Самый эффективный способ подкласса UIView для создания анимированного UIImageView

Итак, я подклассифицировал UIView и создал что-то, что я назвал AnimationView, который принимает массив изображений и делает анимацию с помощью NSTimer. В drawRect: я могу сделать все маскирование и все остальное, что я хочу.

Однако этот способ слишком медленный. Я не могу запустить анимацию со скоростью 30 кадров в секунду, может быть, даже не со скоростью 10 кадров в секунду, и я тестирую 3GS. (Я делаю маскировку и смешивание на каждом кадре :) - и использование тех же изображений отлично воспроизводится на 30 кадров в секунду на UIImageView).

Итак, что является самым эффективным способом достижения этого? Является ли NSTimer плохим выбором? Есть ли лучший способ обойти это?

Спасибо :)

ответ

1

В this answer до this question Mo DeJong предоставляет ссылку на реализацию исходного кода класса, который вручную анимирует рамки изображения PNG. Он утверждает, что получает 15 FPS для 480x320 изображений, анимированных на iPhone, отличном от 3GS.

+0

Спасибо за это. Может быть, не «самый эффективный», как задает вопрос: P, но неплохо. – Dimitris

0

NSTimer прекрасно. Проблема в том, что вы касаетесь большого количества пикселей, используя процессор в каждом кадре, используя Quartz (drawRect:). То, что вы хотите сделать, - это использовать OpenGL, если вам приходится составлять изображения с помощью маски или кэшировать изображения в CALayers или CGImages.

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