Expressões para motion design
Coleção de expressões prontas para usar em projetos reais. Copie, cole, adapte.
Spinner de loading
// em Rotation de um Shape Layer circular:time * 180 // meia volta por segundo
// com aceleração progressiva:time * time * 30Blink / piscar
// opacity que pisca a cada 0.5 segundos:Math.floor(time * 2) % 2 == 0 ? 100 : 0
// versão suavizada:(Math.sin(time * Math.PI * 2) + 1) / 2 * 100Parallax com posição de nulo
// position que segue um nulo com mapeamento de faixa:var v = thisComp.layer("Null 1").transform.position;[linear(v[0], 0, thisComp.width, -50, 50), linear(v[1], 0, thisComp.height, -30, 30)]Audio-reactive via slider
// após Convert Audio to Keyframes, usa o nulo gerado:var audio = thisComp.layer("Audio Amplitude").effect("Both Channels")("Slider");[100 + audio * 2, 100 + audio * 2]Números aleatórios estáveis (sem flickering)
random() muda a cada frame. Para valores que ficam fixos por layer:
seedRandom(index, true); // true = seed por layer, não por temporandom(50, 200) // valor entre 50 e 200, estávelLayer que empurra outra
// layer B fica sempre à direita da layer A com espaçamento fixo:var layerA = thisComp.layer("Layer A");var espacamento = 20;
[layerA.transform.position[0] + layerA.sourceRectAtTime(time).width / 2 + espacamento, layerA.transform.position[1]]Texto que atualiza com data
// exibe a data atual no momento do render:var d = new Date();d.toLocaleDateString("pt-BR") // ex: "25/03/2026"Bounce simples (versão curta)
freq = 3;decay = 5;n = 0;if (numKeys > 0) { n = nearestKey(time).index; if (key(n).time > time) n--;}if (n > 0) { t = time - key(n).time; v = velocityAtTime(key(n).time - 0.001); value + v * 0.07 * Math.sin(freq * t * 2 * Math.PI) / Math.exp(decay * t)} else { value }Manter posição na tela (screen space)
// layer que fica sempre no canto superior direito, independente da câmera:// (requer Camera 3D ativa)fromCompToSurface(thisComp.width - 100, 50, 0)