Skip to main content

Class: ChangeSpeed

Defined in: src/animation/speed/index.ts:147

ChangeSpeed - Wraps an animation to modify its playback speed dynamically.

The speed function maps progress (0-1) to a speed multiplier:

  • speed(0.5) = 2 means at the halfway point, play at 2x speed
  • speed(0.2) = 0.5 means at 20% progress, play at 0.5x speed (slower)

This is useful for emphasizing certain parts of an animation by slowing them down, or rushing through less important parts by speeding them up.

Example​

// Slow down the middle of an animation
const anim = changeSpeed(
fadeIn(circle),
(t) => t < 0.3 || t > 0.7 ? 2 : 0.5 // Fast start/end, slow middle
);

// Exponential slowdown (dramatic ending)
const anim2 = changeSpeed(
transform(square, circle),
(t) => 2 - t // Starts at 2x, ends at 1x
);

Extends​

Constructors​

Constructor​

new ChangeSpeed(animation, speedFunc, options): ChangeSpeed

Defined in: src/animation/speed/index.ts:157

Parameters​

animation​

Animation

speedFunc​

SpeedFunction

options​

ChangeSpeedOptions = {}

Returns​

ChangeSpeed

Overrides​

Animation.constructor

Properties​

_hasBegun​

protected _hasBegun: boolean = false

Defined in: src/animation/Animation.ts:49

Track if begin() has been called

Inherited from​

Animation._hasBegun


_isFinished​

protected _isFinished: boolean = false

Defined in: src/animation/Animation.ts:46

Whether the animation has finished

Inherited from​

Animation._isFinished


_startTime​

protected _startTime: number = null

Defined in: src/animation/Animation.ts:43

Time when the animation started (set by Timeline)

Inherited from​

Animation._startTime


animation​

readonly animation: Animation

Defined in: src/animation/speed/index.ts:149

The wrapped animation


duration​

readonly duration: number

Defined in: src/animation/Animation.ts:37

Duration of the animation in seconds

Inherited from​

Animation.duration


mobject​

readonly mobject: Mobject

Defined in: src/animation/Animation.ts:34

The mobject being animated

Inherited from​

Animation.mobject


rateFunc​

readonly rateFunc: RateFunction

Defined in: src/animation/Animation.ts:40

Rate function controlling the animation's pacing

Inherited from​

Animation.rateFunc


remover​

remover: boolean = false

Defined in: src/animation/Animation.ts:55

If true, the scene will remove this mobject after the animation finishes. Used by FadeOut (like Python manim's remover=True).

Inherited from​

Animation.remover


speedFunc​

readonly speedFunc: SpeedFunction

Defined in: src/animation/speed/index.ts:152

The speed function

Accessors​

startTime​

Get Signature​

get startTime(): number

Defined in: src/animation/Animation.ts:236

Get the start time of this animation (set by Timeline)

Returns​

number

Set Signature​

set startTime(time): void

Defined in: src/animation/Animation.ts:243

Set the start time of this animation (used by Timeline)

Parameters​
time​

number

Returns​

void

Inherited from​

Animation.startTime

Methods​

begin()​

begin(): void

Defined in: src/animation/speed/index.ts:176

Set up the animation - call begin on the wrapped animation

Returns​

void

Overrides​

Animation.begin


cleanUpFromScene()​

cleanUpFromScene(scene): void

Defined in: src/animation/Animation.ts:141

Hook called by Scene after the animation finishes, before the next play(). Default: removes mobject if remover is set (FadeOut, Write({remover:true})). Override for animations that need to mutate scene membership — e.g. ReplacementTransform swaps source for target.

Parameters​

scene​

AnimationScene

Returns​

void

Inherited from​

Animation.cleanUpFromScene


finish()​

finish(): void

Defined in: src/animation/speed/index.ts:198

Finish the wrapped animation

Returns​

void

Overrides​

Animation.finish


getSubAlpha()​

protected getSubAlpha(alpha, index, count, lagRatio): number

Defined in: src/animation/Animation.ts:161

Manim CE's get_sub_alpha: remaps a global progress alpha into the local progress of family member index (of count) under a lagRatio stagger. With lagRatio <= 0 (or a single member), every member tracks alpha directly. Subclasses that stagger across a mobject's family (e.g. Create) should index this by familyMembersWithPoints(), never by rendering-layer primitives.

Parameters​

alpha​

number

index​

number

count​

number

lagRatio​

number

Returns​

number

Inherited from​

Animation.getSubAlpha


interpolate()​

interpolate(alpha): void

Defined in: src/animation/speed/index.ts:184

Map adjusted progress to original animation progress and interpolate

Parameters​

alpha​

number

Returns​

void

Overrides​

Animation.interpolate


isFinished()​

isFinished(): boolean

Defined in: src/animation/Animation.ts:197

Check if the animation has finished

Returns​

boolean

Inherited from​

Animation.isFinished


reset()​

reset(): void

Defined in: src/animation/speed/index.ts:206

Reset both this animation and the wrapped animation

Returns​

void

Overrides​

Animation.reset


update()​

update(_dt, currentTime): void

Defined in: src/animation/Animation.ts:174

Update the animation for the current frame.

Parameters​

_dt​

number

Time delta since last frame (unused, but available for subclasses)

currentTime​

number

Current time in the timeline

Returns​

void

Inherited from​

Animation.update