Понимание кадров в анимации - PullRequest
0 голосов
/ 14 октября 2011

Что такое смысл и использование кадров в анимации? Я понимаю, что они связаны с плавностью анимации. Чем больше кадров в секунду показано, тем больше анимация будет плавной. Что такое теория и руководство по использованию при создании приложений с анимацией (например, игр)? В настоящее время я различаю два типа 2D-анимации:

а) Кадровая анимация. ИМХО, основанные на кадрах анимации, просто перемещают представления на экране с помощью таймеров с некоторыми настройками, чтобы сделать это движение плавным.

б) анимация движения. ИМХО, это те, которые связаны с использованием UIView animateWithDuration и других подобных методов.

В настоящее время я использую CADisplayLink в качестве таймера для своего приложения. Таймер инициализируется с frameInterval = 2. Вызывает некоторый метод, который перемещает некоторые представления на экране, используя значения в 1 пункт. Я считаю этот тип движения анимацией, основанной на кадрах, и он более или менее плавный. Что я не понимаю ясно, что происходит под этим, какова моя частота кадров и т. Д.? Использует ли CADisplayLink какие-то промежуточные значения (кадры) при перемещении (анимации) от x = 12 к x = 13?

Я также использую некоторую UIView animateWithDuration, поэтому я считаю это анимацией движения. Я вижу, что настройки частоты кадров для меня гарантированы, мне не нужно ничего делать с частотой кадров явно, верно?

1 Ответ

1 голос
/ 14 октября 2011

Да, когда вы используете стандартные анимационные вызовы, такие как animateWithDuration, ваш код не должен беспокоиться о частоте кадров. Существует вероятность того, что анимация может работать не так быстро, как вам хотелось бы, или быть настолько плавной, как вы хотите, если слишком много непрозрачных объектов нарисовано поверх друг друга или если вы держите процессор / GPU занят другим способом. В этом случае вам придется упростить объекты (например, сделать их непрозрачными) или создать собственную анимацию, возможно, прибегая к OpenGL.

Что касается другого вопроса о частоте кадров, он в основном сводится к тому, сколько раз вы можете нарисовать необходимые изменения для каждого шага анимации в секунду. Вам может понадобиться сделать рисование только 15 раз, чтобы анимация выглядела плавно, в зависимости от количества движения. Как только вы узнаете, какое оптимальное количество FPS вы пытаетесь достичь, тогда вы рассчитываете свой код рисования, чтобы увидеть, сможете ли вы выполнить то, что вам нужно, за необходимое время. На самом деле, прежде чем вы начнете синхронизировать что-либо, попробуйте сделать рисунок с интервалом времени, который дает вам необходимый вам FPS, и посмотрите, как он выглядит. Возможно, вам не нужно беспокоиться о времени, если вы получаете нужную анимацию.

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