@visactor/vrender-core
Version:
## Description
42 lines (39 loc) • 2.03 kB
JavaScript
import { AnimateStatus } from "../common/enums";
import { Generator } from "../common/generator";
export class DefaultTimeline {
constructor() {
this.id = Generator.GenAutoIncrementId(), this.animateHead = null, this.animateTail = null,
this.animateCount = 0, this.paused = !1;
}
addAnimate(animate) {
this.animateTail ? (this.animateTail.nextAnimate = animate, animate.prevAnimate = this.animateTail,
this.animateTail = animate, animate.nextAnimate = null) : (this.animateHead = animate,
this.animateTail = animate), this.animateCount++;
}
pause() {
this.paused = !0;
}
resume() {
this.paused = !1;
}
tick(delta) {
if (this.paused) return;
let animate = this.animateHead;
for (this.animateCount = 0; animate; ) animate.status === AnimateStatus.END ? this.removeAnimate(animate) : animate.status === AnimateStatus.RUNNING || animate.status === AnimateStatus.INITIAL ? (this.animateCount++,
animate.advance(delta)) : animate.status === AnimateStatus.PAUSED && this.animateCount++,
animate = animate.nextAnimate;
}
clear() {
let animate = this.animateHead;
for (;animate; ) animate.release(), animate = animate.nextAnimate;
this.animateHead = null, this.animateTail = null, this.animateCount = 0;
}
removeAnimate(animate, release = !0) {
animate._onRemove && animate._onRemove.forEach((cb => cb())), animate === this.animateHead ? (this.animateHead = animate.nextAnimate,
animate === this.animateTail ? this.animateTail = null : this.animateHead.prevAnimate = null) : animate === this.animateTail ? (this.animateTail = animate.prevAnimate,
this.animateTail.nextAnimate = null) : (animate.prevAnimate.nextAnimate = animate.nextAnimate,
animate.nextAnimate.prevAnimate = animate.prevAnimate), release && animate.release();
}
}
export const defaultTimeline = new DefaultTimeline;
//# sourceMappingURL=timeline.js.map