Работал недавно над проектом. Потом, может быть, покажу. Там нужно было анимировать вот такие титры:
3 трассы
20 дилерских центров
50 автомобилей
900 гостей
1000 тест-драйвов в течение одного дня
Как видно, цифры идут по увеличению. Идея была такой: выезжает титр: "0 автомобилей" а потом ноль начинает быстро "считаться" до 50. Причем без всяких дробей. Решение выкладываю тут. Возможно, и вам когда-то пригодится.
Итак, создаем текстовый слой, неважно, что там будет написано. Применяем выражение к Source Text:
Код:
startNumber = 0;
endNumber = 20;
counterSpeed = 10;
var t = Math.floor(time * counterSpeed);
if (t > endNumber)
t = endNumber
else
t
t
Изменяем его под свои нужды:
startNumber = это число, с которого начинает все считаться. У меня начинает с нуля.
endNumber = конечная цифра. В данном случае счетчик считает до 20 и останавливается.
counterSpeed = скорость счетчика. Методом тыка устанавливаем нужную скорость.
Проблема заключается в том, что если передвинуть этот текстовый слой во времени, все теряется. Или - как было у меня, титр в начале должен был вылететь, а потом уже считаться. Т.е. нужно получить контроль над временем начала этой анимации. Для этого нужно на этом слое выставить маркер слоя (выделить слой и нажать звездочку * на цифровой клаве), он нам послужит триггером, и тогда уже вместо предыдущего выражения вставить вот это (все к тому же Source Text):
Код:
startNumber = 0;
endNumber = 20;
counterSpeed = 10;
var m = marker.key(1).time; // layer marker is a trigger
var beginTime = time - m;
var t = Math.round(beginTime * counterSpeed);
if (t > endNumber)
t = endNumber
else
if (t < startNumber)
t = startNumber
else value
value
t
Анимация будет начинаться с того момента, где находится маркер слоя. Передвигая его, мы получаем полный контроль.