Use AnimationScheduler instead of Timer

Closes #2289, #2290