Изменение скорости текущей анимации CAKeyframeAnimation - PullRequest
2 голосов
/ 04 декабря 2011

Я добавил анимацию CAKeyframe с ключом «SpeedBoat» в CALayer.Сейчас я пытаюсь изменить скорость анимации во время анимации.

[[self.shipLayer animationForKey:@"SpeedBoat"] setSpeed:([[self.shipLayer animationForKey:@"SpeedBoat"] speed] + deltaTime)];

Кажется, в этой строке есть ошибка.Но я не получаю никакой отладочной информации.Что здесь не так?Можно ли изменить скорость текущей анимации?

Было бы очень хорошо, если бы кто-нибудь мог мне помочь:)

С наилучшими пожеланиями xen

1 Ответ

1 голос
/ 07 декабря 2011

Да, вы точно можете изменить скорость анимации. Это потому что CAKeyframeAnimation подтверждает протокол CAMediaTiming.

Apple объясняет это в своем Руководстве по программированию типов анимации и синхронизации .

Взгляните на раздел Синхронизация, Пространства времени и CAAnimation .

В частности:

"Свойство speed для анимации или слоя задает этот коэффициент масштабирования. Например, 10-секундная анимация, которая прикреплена к слою с временным пространством со значением скорости 2, будет отображаться в течение 5 секунд (в два раза быстрее Если подуровень этого слоя также определяет коэффициент скорости 2, то его анимация будет отображаться в 1/4 времени (скорость суперслоя * скорость подслоя). "

Могу ли я также указать вам несколько отличных видео, которые освещают это? Посмотрите на:

Сессии WWDC 2010 424 и 425 Основная анимация на практике, части 1 и 2

WWDC 2011 г. Сессия 421 Основные основы анимации

и

Видео для разработчиков Сессия 716 Основные анимационные приемы для iPhone и Mac

Вы даже можете изменить скорость анимации, чтобы эффективно «заморозить» ее. Это очень полезно для приостановки и возобновления. Хотя одно предостережение заключается в том, что он не будет работать должным образом, если приложение будет фоновым или удалено из памяти. С этим вам придется иметь дело вручную.

См. Технические вопросы и ответы QA1673 и мой ответ на этот вопрос для получения дополнительной информации об этом процессе:

Есть ли проблема с обновлением позиции CALayer во время паузы слоя?

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