UNPKG

@visactor/vrender-core

Version:
42 lines (39 loc) 2.03 kB
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