Skip to main content

Loop expression

Em vez de duplicar keyframes, uma linha de código faz o ciclo rodar pra sempre.

loopOut(): repetindo pro futuro

Repete os keyframes para frente no tempo. A layer precisa ter pelo menos 2 keyframes.

loopOut() // padrão: "cycle"
loopOut("cycle") // repete do início
loopOut("pingpong") // vai e volta
loopOut("continue") // continua na velocidade do último keyframe
loopOut("offset") // repete com offset acumulativo

loopIn(): repetindo pro passado

loopIn("cycle")
loopIn("pingpong")

Os tipos

cycle: repete do início ao fim e recomeça. Para loop perfeito, o valor do primeiro e último keyframe devem ser iguais. Senão tem um salto na transição.

pingpong: vai até o final e retrocede. Não precisa que primeiro e último sejam iguais.

loopOut("pingpong") // ícone que pulsa entre 100% e 110%

offset: a cada repetição, adiciona o delta entre início e fim. Para movimento contínuo:

// keyframes: 0° no frame 0, 360° no frame 30
loopOut("offset")
// gira pra sempre sem voltar ao 0

continue: após o último keyframe, mantém a velocidade. Bola que para de ser animada mas continua rolando.

Número de ciclos

loopOut("cycle", 2) // repete só 2 vezes
loopOut("pingpong", 3) // vai e vem 3 vezes

Loop com stagger por index

A forma mais prática de deslocar o timing entre layers é usar valueAtTime numa layer master:

// layer 1 (master): keyframes normais + loopOut("cycle")
// layers 2, 3, 4... (escravas):
var delay = thisLayer.index * 0.1;
thisComp.layer("Layer 1").transform.position.valueAtTime(time - delay)