JavaScript básico para expressões
Não precisa saber JS completo. Mas conhecer o mínimo transforma expressões limitadas em soluções elegantes.
Variáveis
// use var — o after não suporta let/const modernosvar velocidade = 50;var nome = "meu texto";var ativo = true;
velocidade * timeOperadores matemáticos
2 + 3 // soma10 - 4 // subtração5 * 6 // multiplicação20 / 4 // divisão10 % 3 // módulo (resto) — 12 ** 3 // potência — 8Condicionais
// opacity que pisca a cada segundoif (Math.floor(time) % 2 == 0) { 100 // visível em segundos pares} else { 0}O after usa o último valor calculado como resultado. Em if/else, é o valor do bloco executado.
Operador ternário pra condições simples:
// condição ? verdadeiro : falsotime < 1 ? 0 : 100Math
Math.sin(angle) // seno (radianos)Math.cos(angle) // cossenoMath.abs(n) // valor absolutoMath.floor(n) // arredonda pra baixoMath.ceil(n) // arredonda pra cimaMath.round(n) // arredonda pro mais próximoMath.min(a, b) // menor entre doisMath.max(a, b) // maior entre doisMath.sqrt(n) // raiz quadradaMath.PI // 3.14159...Math.random() // aleatório 0-1 — muda a cada frame!Caution
Math.random() muda a cada frame — geralmente não é o que você quer. Usa wiggle() ou seedRandom() pra aleatoriedade estável.
Radianos e graus
O after usa graus nas propriedades, mas Math.sin e Math.cos usam radianos:
// graus → radianosvar rad = 45 * Math.PI / 180;
// radianos → grausvar graus = 1.5 * 180 / Math.PI;Arrays
Position retorna [x, y]:
var pos = [100, 200];pos[0] // x = 100pos[1] // y = 200
// modifica X, mantém Yvar p = value;[p[0] + 50, p[1]]Funções
function bounce(amp, freq, decay) { var t = time - thisLayer.inPoint; var v = velocityAtTime(thisLayer.inPoint - thisComp.frameDuration * 0.01); return value + v * amp * Math.sin(freq * t * Math.PI * 2) / Math.exp(decay * t);}
bounce(0.05, 4, 6)Comenta expressões complexas com // — você vai agradecer na próxima vez que abrir o projeto.