Contador animado
Um contador animado é um dos elementos mais pedidos em motion design corporativo. Com expressões, você cria uma vez e nunca mais keyframeia número a número.
O conceito
Em vez de keyframear o texto “0, 1, 2, 3…” frame a frame:
- Cria um Slider Control que vai de 0 a 100 (com animação suave)
- Arredonda o valor do slider
- Usa expressão em Source Text para exibir o número atual
Setup
- Crie um nulo e nomeie “CONTADOR”
- Aplique Effect > Expression Controls > Slider Control
- Renomeie o efeito para “Valor”
- Crie keyframes: frame 0 = 0, frame 60 = 100 (ou seus valores)
- Aplique F9 (Easy Ease) nos keyframes
- Crie um text layer e adicione expressão em Source Text
// referencia o slider e arredonda para inteirovar valor = thisComp.layer("CONTADOR").effect("Valor")("Slider");Math.round(valor).toString()O texto exibe o número em tempo real conforme o slider anima.
Formatação: zeros à esquerda
Para exibir 005 em vez de 5:
var valor = thisComp.layer("CONTADOR").effect("Valor")("Slider");var n = Math.round(valor);var str = n.toString();
// adiciona zeros à esquerda para sempre ter 3 dígitoswhile (str.length < 3) str = "0" + str;strFormatação: separador de milhar
Para exibir 1.234.567 com pontos:
var valor = thisComp.layer("CONTADOR").effect("Valor")("Slider");var n = Math.round(valor);var str = n.toString();var result = "";var count = 0;
for (var i = str.length - 1; i >= 0; i--) { if (count > 0 && count % 3 == 0) result = "." + result; result = str[i] + result; count++;}resultPrefixo/sufixo
var valor = thisComp.layer("CONTADOR").effect("Valor")("Slider");"R$ " + Math.round(valor).toString() // com prefixo
Math.round(valor).toString() + "%" // com sufixoContador com decimal
Para exibir 3.7 com uma casa decimal:
var valor = thisComp.layer("CONTADOR").effect("Valor")("Slider");var n = Math.round(valor * 10) / 10;n.toFixed(1)Múltiplos contadores
Com um único nulo de controle com múltiplos sliders:
// cada texto referencia um slider diferentevar valor = thisComp.layer("DADOS").effect("Slider 1")("Slider");Math.round(valor) + "%"Easing do contador
A animação do slider controla o easing. Para o número “ficar” no valor final por mais tempo: no graph editor, puxe a handle final pra criar uma desaceleração longa. A chegada lenta faz o número parecer mais pesado e real.