Skip to main content

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 modernos
var velocidade = 50;
var nome = "meu texto";
var ativo = true;
velocidade * time

Operadores matemáticos

2 + 3 // soma
10 - 4 // subtração
5 * 6 // multiplicação
20 / 4 // divisão
10 % 3 // módulo (resto) — 1
2 ** 3 // potência — 8

Condicionais

// opacity que pisca a cada segundo
if (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 : falso
time < 1 ? 0 : 100

Math

Math.sin(angle) // seno (radianos)
Math.cos(angle) // cosseno
Math.abs(n) // valor absoluto
Math.floor(n) // arredonda pra baixo
Math.ceil(n) // arredonda pra cima
Math.round(n) // arredonda pro mais próximo
Math.min(a, b) // menor entre dois
Math.max(a, b) // maior entre dois
Math.sqrt(n) // raiz quadrada
Math.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 → radianos
var rad = 45 * Math.PI / 180;
// radianos → graus
var graus = 1.5 * 180 / Math.PI;

Arrays

Position retorna [x, y]:

var pos = [100, 200];
pos[0] // x = 100
pos[1] // y = 200
// modifica X, mantém Y
var 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.