Когда делаешь зацикленную анимацию, нежелательно использовать состояния, поскольку в Фреймере стоит ограничение на количество итераций цикла. Ты можешь написать бесконечный цикл и он сработает 2000 раз, но потом остановится.
delayTime = 1
i = 1
loop
Utils.delay delayTime * i, ->
layer.stateCycle()
i++
Для твоей цели лучше использовать две анимации: по завершению одной будет запускаться другая и так по кругу.
animation1.on Events.AnimationEnd,
animation2.start
И обратно
animation2.on Events.AnimationEnd,
animation1.start
framer.cloud/LuUqh/