loopOut("cycle",n) and loopIn("cycle",n) on Scale Cause Infinite Looping and Faster Animation i
Title: Bug: loopOut("cycle",n) and loopIn("cycle",n) on Scale Cause Infinite Looping and Faster Animation in After Effects 25.2
Body:
Hi everyone,
I'm encountering a strange issue with the loopOut("cycle",n) and loopIn("cycle",n) expressions applied to the Scale property in After Effects 25.2. Instead of looping the specified number of cycles, the animation loops infinitely, and the animation speed increases unexpectedly when the cycle count is increased. This behavior seems like a bug, as it doesn't align with the documented functionality of these expressions.
Details of the Issue
-
Goal: I want to animate a layer's Scale property with keyframes from frame 0 to 25, looping 5 times until frame 150 (5 seconds at 30 fps), then holding the Scale value at frame 25 until frame 180 (6 seconds).
-
Problem:
-
Using loopOut("cycle",2) (expected: 3 cycles = 75 frames):
-
The Scale animation loops infinitely instead of stopping after 3 cycles.
-
The animation feels faster than expected, appearing to complete sooner than 75 frames.
-
-
Using loopOut("cycle",1) (expected: 2 cycles = 50 frames):
-
Also loops infinitely, but slower than loopOut("cycle",2).
-
-
Using loopOut("cycle",3):
-
Loops infinitely and feels even faster than loopOut("cycle",2).
-
-
Using loopIn("cycle",2) (expected: 3 cycles backward before frame 0):
-
Loops infinitely from the start of the timeline.
-
Feels faster than loopIn("cycle",1), but doesn't stop after 3 cycles.
-
-
The increasing speed with higher cycle counts (e.g., 1 to 2 to 3) is noticeable and inconsistent with the expected cycle duration (25 frames = 0.833 seconds per cycle at 30 fps).
-
-
Expected Behavior:
-
loopOut("cycle",2): 3 cycles (75 frames), holds Scale value at frame 25.
-
loopIn("cycle",2): 3 cycles backward, holds Scale value at frame 25.
-
For my goal: 5 cycles (125 frames) until frame 150, then hold Scale value at frame 25.
-
Steps to Reproduce
-
Create a new composition:
-
Frame Rate: 30 fps
-
Duration: 180 frames (6 seconds)
-
-
Add a Solid layer.
-
Animate Scale:
-
Frame 0: [100, 100]%
-
Frame 25: [200, 200]%
-
Ensure no keyframes beyond frame 25.
-
-
Apply one of the following expressions to Scale:
-
loopOut("cycle",2)
-
loopOut("cycle",1)
-
loopOut("cycle",3)
-
loopIn("cycle",2)
-
-
RAM Preview:
-
Observe: Animation loops infinitely instead of stopping after the specified cycles.
-
Note: Higher cycle counts (e.g., loopOut("cycle",3)) make the animation visibly faster than lower counts (e.g., loopOut("cycle",1)).
-
