отрывистая анимация с использованием Core Animation - PullRequest
0 голосов
/ 14 апреля 2010

В своем приложении для iPhone я пытаюсь заставить некоторые красные и белые полосы прокручиваться по экрану, чтобы плавно анимировать, когда скорость полос становится высокой. В моем приложении пользователь запускает анимацию и изменяет скорость прокрутки пальцем, а ширину полос - двумя пальцами. Анимация останавливается в ответ на двойное нажатие. Если скорость становится высокой или полосы сужаются, анимация перестает быть гладкой для глаз. Края полос, кажется, прыгают.

Анимация проста. Я рисую полосы в слое немного больше экрана. Затем я настроил анимацию, которая перемещает положение слоя точно на расстояние от одной красной полосы до следующей. Длительность определяется скоростью пальца и счетчиком повторений 1. Когда анимация останавливается, делегат проверяет флаг, чтобы увидеть, хочет ли пользователь остановить прокрутку. Если нет, анимация перезапускается снова на один цикл. Есть ли лучшие способы сделать это так, чтобы анимация была плавной на высоких скоростях или с узкими полосами?

Спасибо -

1 Ответ

1 голос
/ 14 апреля 2010

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

Исправление будет заключаться в увеличении расстояния, пройденного каждой анимацией, по мере того, как полосы сужаются.Таким образом, вместо анимации с одной красной полосы на другую, вы оживляете до n-го.Если вы увеличите n, когда полосы станут меньше, вы сможете удерживать анимацию в секунду примерно устойчивой.

С точки зрения анимации в секунду, увеличение скорости аналогично сужению полосы.Таким образом, исправление остается тем же: с увеличением скорости увеличивайте n.

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