@visactor/vrender-animate 0.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -0
- package/cjs/animate-extension.d.ts +15 -0
- package/cjs/animate-extension.js +46 -0
- package/cjs/animate-extension.js.map +1 -0
- package/cjs/animate.d.ts +71 -0
- package/cjs/animate.js +210 -0
- package/cjs/animate.js.map +1 -0
- package/cjs/custom/clip-graphic.d.ts +53 -0
- package/cjs/custom/clip-graphic.js +146 -0
- package/cjs/custom/clip-graphic.js.map +1 -0
- package/cjs/custom/clip.d.ts +13 -0
- package/cjs/custom/clip.js +24 -0
- package/cjs/custom/clip.js.map +1 -0
- package/cjs/custom/common.d.ts +22 -0
- package/cjs/custom/common.js +58 -0
- package/cjs/custom/common.js.map +1 -0
- package/cjs/custom/custom-animate.d.ts +15 -0
- package/cjs/custom/custom-animate.js +25 -0
- package/cjs/custom/custom-animate.js.map +1 -0
- package/cjs/custom/fade.d.ts +13 -0
- package/cjs/custom/fade.js +24 -0
- package/cjs/custom/fade.js.map +1 -0
- package/cjs/custom/group-fade.d.ts +16 -0
- package/cjs/custom/group-fade.js +66 -0
- package/cjs/custom/group-fade.js.map +1 -0
- package/cjs/custom/growAngle.d.ts +37 -0
- package/cjs/custom/growAngle.js +140 -0
- package/cjs/custom/growAngle.js.map +1 -0
- package/cjs/custom/growCenter.d.ts +17 -0
- package/cjs/custom/growCenter.js +161 -0
- package/cjs/custom/growCenter.js.map +1 -0
- package/cjs/custom/growHeight.d.ts +36 -0
- package/cjs/custom/growHeight.js +154 -0
- package/cjs/custom/growHeight.js.map +1 -0
- package/cjs/custom/growPoints.d.ts +52 -0
- package/cjs/custom/growPoints.js +227 -0
- package/cjs/custom/growPoints.js.map +1 -0
- package/cjs/custom/growRadius.d.ts +41 -0
- package/cjs/custom/growRadius.js +113 -0
- package/cjs/custom/growRadius.js.map +1 -0
- package/cjs/custom/growWidth.d.ts +36 -0
- package/cjs/custom/growWidth.js +154 -0
- package/cjs/custom/growWidth.js.map +1 -0
- package/cjs/custom/input-text.d.ts +29 -0
- package/cjs/custom/input-text.js +45 -0
- package/cjs/custom/input-text.js.map +1 -0
- package/cjs/custom/number.d.ts +25 -0
- package/cjs/custom/number.js +102 -0
- package/cjs/custom/number.js.map +1 -0
- package/cjs/custom/register.d.ts +1 -0
- package/cjs/custom/register.js +35 -0
- package/cjs/custom/register.js.map +1 -0
- package/cjs/custom/scale-in.d.ts +13 -0
- package/cjs/custom/scale-in.js +57 -0
- package/cjs/custom/scale-in.js.map +1 -0
- package/cjs/custom/scale.d.ts +20 -0
- package/cjs/custom/scale.js +106 -0
- package/cjs/custom/scale.js.map +1 -0
- package/cjs/custom/sphere.d.ts +20 -0
- package/cjs/custom/sphere.js +26 -0
- package/cjs/custom/sphere.js.map +1 -0
- package/cjs/custom/state.d.ts +13 -0
- package/cjs/custom/state.js +25 -0
- package/cjs/custom/state.js.map +1 -0
- package/cjs/custom/tag-points.d.ts +26 -0
- package/cjs/custom/tag-points.js +81 -0
- package/cjs/custom/tag-points.js.map +1 -0
- package/cjs/custom/update.d.ts +14 -0
- package/cjs/custom/update.js +26 -0
- package/cjs/custom/update.js.map +1 -0
- package/cjs/executor/animate-executor.d.ts +36 -0
- package/cjs/executor/animate-executor.js +177 -0
- package/cjs/executor/animate-executor.js.map +1 -0
- package/cjs/executor/executor.d.ts +69 -0
- package/cjs/executor/executor.js +6 -0
- package/cjs/executor/executor.js.map +1 -0
- package/cjs/index.d.ts +25 -0
- package/cjs/index.js +214 -0
- package/cjs/index.js.map +1 -0
- package/cjs/interpolate/executor.d.ts +66 -0
- package/cjs/interpolate/executor.js +6 -0
- package/cjs/interpolate/executor.js.map +1 -0
- package/cjs/interpolate/number.d.ts +1 -0
- package/cjs/interpolate/number.js +10 -0
- package/cjs/interpolate/number.js.map +1 -0
- package/cjs/interpolate/store.d.ts +32 -0
- package/cjs/interpolate/store.js +96 -0
- package/cjs/interpolate/store.js.map +1 -0
- package/cjs/intreface/animate.d.ts +91 -0
- package/cjs/intreface/animate.js +10 -0
- package/cjs/intreface/animate.js.map +1 -0
- package/cjs/intreface/easing.d.ts +3 -0
- package/cjs/intreface/easing.js +6 -0
- package/cjs/intreface/easing.js.map +1 -0
- package/cjs/intreface/state.d.ts +35 -0
- package/cjs/intreface/state.js +6 -0
- package/cjs/intreface/state.js.map +1 -0
- package/cjs/intreface/ticker.d.ts +37 -0
- package/cjs/intreface/ticker.js +10 -0
- package/cjs/intreface/ticker.js.map +1 -0
- package/cjs/intreface/timeline.d.ts +17 -0
- package/cjs/intreface/timeline.js +6 -0
- package/cjs/intreface/timeline.js.map +1 -0
- package/cjs/intreface/type.d.ts +13 -0
- package/cjs/intreface/type.js +15 -0
- package/cjs/intreface/type.js.map +1 -0
- package/cjs/register.d.ts +1 -0
- package/cjs/register.js +19 -0
- package/cjs/register.js.map +1 -0
- package/cjs/state/animation-state-machine.d.ts +22 -0
- package/cjs/state/animation-state-machine.js +53 -0
- package/cjs/state/animation-state-machine.js.map +1 -0
- package/cjs/state/animation-state-queue.d.ts +24 -0
- package/cjs/state/animation-state-queue.js +66 -0
- package/cjs/state/animation-state-queue.js.map +1 -0
- package/cjs/state/animation-state-registry.d.ts +14 -0
- package/cjs/state/animation-state-registry.js +53 -0
- package/cjs/state/animation-state-registry.js.map +1 -0
- package/cjs/state/animation-state.d.ts +25 -0
- package/cjs/state/animation-state.js +80 -0
- package/cjs/state/animation-state.js.map +1 -0
- package/cjs/state/animation-states-registry.d.ts +17 -0
- package/cjs/state/animation-states-registry.js +95 -0
- package/cjs/state/animation-states-registry.js.map +1 -0
- package/cjs/state/graphic-extension.d.ts +12 -0
- package/cjs/state/graphic-extension.js +37 -0
- package/cjs/state/graphic-extension.js.map +1 -0
- package/cjs/state/index.d.ts +3 -0
- package/cjs/state/index.js +22 -0
- package/cjs/state/index.js.map +1 -0
- package/cjs/state/types.d.ts +11 -0
- package/cjs/state/types.js +6 -0
- package/cjs/state/types.js.map +1 -0
- package/cjs/step.d.ts +49 -0
- package/cjs/step.js +124 -0
- package/cjs/step.js.map +1 -0
- package/cjs/ticker/default-ticker.d.ts +39 -0
- package/cjs/ticker/default-ticker.js +133 -0
- package/cjs/ticker/default-ticker.js.map +1 -0
- package/cjs/ticker/manual-ticker.d.ts +6 -0
- package/cjs/ticker/manual-ticker.js +37 -0
- package/cjs/ticker/manual-ticker.js.map +1 -0
- package/cjs/timeline.d.ts +34 -0
- package/cjs/timeline.js +84 -0
- package/cjs/timeline.js.map +1 -0
- package/cjs/utils/easing-func.d.ts +1 -0
- package/cjs/utils/easing-func.js +16 -0
- package/cjs/utils/easing-func.js.map +1 -0
- package/cjs/utils/easing.d.ts +49 -0
- package/cjs/utils/easing.js +141 -0
- package/cjs/utils/easing.js.map +1 -0
- package/dist/index.es.js +3824 -0
- package/es/animate-extension.d.ts +15 -0
- package/es/animate-extension.js +42 -0
- package/es/animate-extension.js.map +1 -0
- package/es/animate.d.ts +71 -0
- package/es/animate.js +207 -0
- package/es/animate.js.map +1 -0
- package/es/custom/clip-graphic.d.ts +53 -0
- package/es/custom/clip-graphic.js +134 -0
- package/es/custom/clip-graphic.js.map +1 -0
- package/es/custom/clip.d.ts +13 -0
- package/es/custom/clip.js +14 -0
- package/es/custom/clip.js.map +1 -0
- package/es/custom/common.d.ts +22 -0
- package/es/custom/common.js +48 -0
- package/es/custom/common.js.map +1 -0
- package/es/custom/custom-animate.d.ts +15 -0
- package/es/custom/custom-animate.js +17 -0
- package/es/custom/custom-animate.js.map +1 -0
- package/es/custom/fade.d.ts +13 -0
- package/es/custom/fade.js +14 -0
- package/es/custom/fade.js.map +1 -0
- package/es/custom/group-fade.d.ts +16 -0
- package/es/custom/group-fade.js +56 -0
- package/es/custom/group-fade.js.map +1 -0
- package/es/custom/growAngle.d.ts +37 -0
- package/es/custom/growAngle.js +132 -0
- package/es/custom/growAngle.js.map +1 -0
- package/es/custom/growCenter.d.ts +17 -0
- package/es/custom/growCenter.js +155 -0
- package/es/custom/growCenter.js.map +1 -0
- package/es/custom/growHeight.d.ts +36 -0
- package/es/custom/growHeight.js +144 -0
- package/es/custom/growHeight.js.map +1 -0
- package/es/custom/growPoints.d.ts +52 -0
- package/es/custom/growPoints.js +219 -0
- package/es/custom/growPoints.js.map +1 -0
- package/es/custom/growRadius.d.ts +41 -0
- package/es/custom/growRadius.js +105 -0
- package/es/custom/growRadius.js.map +1 -0
- package/es/custom/growWidth.d.ts +36 -0
- package/es/custom/growWidth.js +144 -0
- package/es/custom/growWidth.js.map +1 -0
- package/es/custom/input-text.d.ts +29 -0
- package/es/custom/input-text.js +37 -0
- package/es/custom/input-text.js.map +1 -0
- package/es/custom/number.d.ts +25 -0
- package/es/custom/number.js +94 -0
- package/es/custom/number.js.map +1 -0
- package/es/custom/register.d.ts +1 -0
- package/es/custom/register.js +39 -0
- package/es/custom/register.js.map +1 -0
- package/es/custom/scale-in.d.ts +13 -0
- package/es/custom/scale-in.js +49 -0
- package/es/custom/scale-in.js.map +1 -0
- package/es/custom/scale.d.ts +20 -0
- package/es/custom/scale.js +96 -0
- package/es/custom/scale.js.map +1 -0
- package/es/custom/sphere.d.ts +20 -0
- package/es/custom/sphere.js +20 -0
- package/es/custom/sphere.js.map +1 -0
- package/es/custom/state.d.ts +13 -0
- package/es/custom/state.js +17 -0
- package/es/custom/state.js.map +1 -0
- package/es/custom/tag-points.d.ts +26 -0
- package/es/custom/tag-points.js +77 -0
- package/es/custom/tag-points.js.map +1 -0
- package/es/custom/update.d.ts +14 -0
- package/es/custom/update.js +18 -0
- package/es/custom/update.js.map +1 -0
- package/es/executor/animate-executor.d.ts +36 -0
- package/es/executor/animate-executor.js +169 -0
- package/es/executor/animate-executor.js.map +1 -0
- package/es/executor/executor.d.ts +69 -0
- package/es/executor/executor.js +2 -0
- package/es/executor/executor.js.map +1 -0
- package/es/index.d.ts +25 -0
- package/es/index.js +50 -0
- package/es/index.js.map +1 -0
- package/es/interpolate/executor.d.ts +66 -0
- package/es/interpolate/executor.js +2 -0
- package/es/interpolate/executor.js.map +1 -0
- package/es/interpolate/number.d.ts +1 -0
- package/es/interpolate/number.js +4 -0
- package/es/interpolate/number.js.map +1 -0
- package/es/interpolate/store.d.ts +32 -0
- package/es/interpolate/store.js +88 -0
- package/es/interpolate/store.js.map +1 -0
- package/es/intreface/animate.d.ts +91 -0
- package/es/intreface/animate.js +6 -0
- package/es/intreface/animate.js.map +1 -0
- package/es/intreface/easing.d.ts +3 -0
- package/es/intreface/easing.js +2 -0
- package/es/intreface/easing.js.map +1 -0
- package/es/intreface/state.d.ts +35 -0
- package/es/intreface/state.js +2 -0
- package/es/intreface/state.js.map +1 -0
- package/es/intreface/ticker.d.ts +37 -0
- package/es/intreface/ticker.js +6 -0
- package/es/intreface/ticker.js.map +1 -0
- package/es/intreface/timeline.d.ts +17 -0
- package/es/intreface/timeline.js +2 -0
- package/es/intreface/timeline.js.map +1 -0
- package/es/intreface/type.d.ts +13 -0
- package/es/intreface/type.js +14 -0
- package/es/intreface/type.js.map +1 -0
- package/es/register.d.ts +1 -0
- package/es/register.js +20 -0
- package/es/register.js.map +1 -0
- package/es/state/animation-state-machine.d.ts +22 -0
- package/es/state/animation-state-machine.js +47 -0
- package/es/state/animation-state-machine.js.map +1 -0
- package/es/state/animation-state-queue.d.ts +24 -0
- package/es/state/animation-state-queue.js +58 -0
- package/es/state/animation-state-queue.js.map +1 -0
- package/es/state/animation-state-registry.d.ts +14 -0
- package/es/state/animation-state-registry.js +45 -0
- package/es/state/animation-state-registry.js.map +1 -0
- package/es/state/animation-state.d.ts +25 -0
- package/es/state/animation-state.js +72 -0
- package/es/state/animation-state.js.map +1 -0
- package/es/state/animation-states-registry.d.ts +17 -0
- package/es/state/animation-states-registry.js +87 -0
- package/es/state/animation-states-registry.js.map +1 -0
- package/es/state/graphic-extension.d.ts +12 -0
- package/es/state/graphic-extension.js +29 -0
- package/es/state/graphic-extension.js.map +1 -0
- package/es/state/index.d.ts +3 -0
- package/es/state/index.js +6 -0
- package/es/state/index.js.map +1 -0
- package/es/state/types.d.ts +11 -0
- package/es/state/types.js +2 -0
- package/es/state/types.js.map +1 -0
- package/es/step.d.ts +49 -0
- package/es/step.js +120 -0
- package/es/step.js.map +1 -0
- package/es/ticker/default-ticker.d.ts +39 -0
- package/es/ticker/default-ticker.js +129 -0
- package/es/ticker/default-ticker.js.map +1 -0
- package/es/ticker/manual-ticker.d.ts +6 -0
- package/es/ticker/manual-ticker.js +29 -0
- package/es/ticker/manual-ticker.js.map +1 -0
- package/es/timeline.d.ts +34 -0
- package/es/timeline.js +79 -0
- package/es/timeline.js.map +1 -0
- package/es/utils/easing-func.d.ts +1 -0
- package/es/utils/easing-func.js +8 -0
- package/es/utils/easing-func.js.map +1 -0
- package/es/utils/easing.d.ts +49 -0
- package/es/utils/easing.js +134 -0
- package/es/utils/easing.js.map +1 -0
- package/package.json +72 -0
package/es/step.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/step.ts"],"names":[],"mappings":"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","file":"step.js","sourcesContent":["import { ColorStore, ColorType, type IGraphic } from '@visactor/vrender-core';\nimport type { IAnimate, IStep } from './intreface/animate';\nimport type { EasingType, EasingTypeFunc } from './intreface/easing';\nimport type { IAnimateStepType } from './intreface/type';\nimport { Easing } from './utils/easing';\nimport { commonInterpolateUpdate, interpolateUpdateStore } from './interpolate/store';\nimport { isString } from '@visactor/vutils';\n\nfunction noop() {\n //...\n}\n\nexport class Step implements IStep {\n type: IAnimateStepType;\n prev?: IStep;\n duration: number;\n next?: IStep;\n props?: Record<string, any>;\n propKeys?: string[];\n interpolateUpdateFunctions?: ((\n key: string,\n from: number,\n to: number,\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => void)[];\n easing: EasingTypeFunc;\n animate: IAnimate;\n target: IGraphic;\n fromProps: Record<string, any>;\n fromParsedProps: Record<string, any>;\n toParsedProps: Record<string, any>;\n\n // 内部状态\n protected _startTime: number = 0;\n _hasFirstRun: boolean = false;\n\n protected _endCb?: (animate: IAnimate, step: IStep) => void;\n\n constructor(type: IAnimateStepType, props: Record<string, any>, duration: number, easing: EasingType) {\n this.type = type;\n this.props = props;\n this.duration = duration;\n // 设置缓动函数\n if (easing) {\n this.easing = typeof easing === 'function' ? easing : Easing[easing];\n } else {\n this.easing = Easing.linear;\n }\n if (type === 'wait') {\n this.onUpdate = noop;\n }\n }\n\n bind(target: IGraphic, animate: IAnimate): void {\n this.target = target;\n this.animate = animate;\n this.onBind();\n }\n\n append(step: IStep): void {\n this.next = step;\n step.prev = this;\n\n // 更新绝对时间\n step.setStartTime(this.getStartTime() + this.duration, false);\n }\n\n // 更新下游节点的开始时间\n private updateDownstreamStartTimes(): void {\n let currentStep = this.next;\n let currentStartTime = this._startTime + this.duration;\n\n while (currentStep) {\n currentStep.setStartTime(currentStartTime, false);\n currentStartTime += currentStep.duration;\n currentStep = currentStep.next;\n }\n this.animate.updateDuration();\n }\n\n getLastProps(): any {\n if (this.prev) {\n return this.prev.props || {};\n }\n return this.animate.getStartProps();\n }\n\n setDuration(duration: number, updateDownstream: boolean = true): void {\n this.duration = duration;\n\n // 如果有后续节点,更新所有后续节点的开始时间\n if (updateDownstream) {\n this.updateDownstreamStartTimes();\n }\n }\n\n getDuration(): number {\n return this.duration;\n }\n\n determineInterpolateUpdateFunction(): void {\n // 根据属性类型确定插值更新函数\n // 这里可以进行优化,例如缓存不同类型属性的插值更新函数\n if (!this.props) {\n return;\n }\n\n const funcs: ((key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void)[] = [];\n this.propKeys.forEach(key => {\n // 普通颜色特殊处理,需要提前解析成number[]\n if (key === 'fill' || key === 'stroke') {\n const from = this.getLastProps()[key];\n const to = this.props[key];\n if (isString(from) && isString(to)) {\n const fromArray = ColorStore.Get(from, ColorType.Color255);\n const toArray = ColorStore.Get(to, ColorType.Color255);\n if (!this.fromParsedProps) {\n this.fromParsedProps = {};\n }\n if (!this.toParsedProps) {\n this.toParsedProps = {};\n }\n this.fromParsedProps[key] = fromArray;\n this.toParsedProps[key] = toArray;\n }\n funcs.push((interpolateUpdateStore as any)[key === 'fill' ? 'fillPure' : 'strokePure']);\n } else if ((interpolateUpdateStore as any)[key]) {\n funcs.push((interpolateUpdateStore as any)[key]);\n } else {\n funcs.push(commonInterpolateUpdate);\n }\n });\n this.interpolateUpdateFunctions = funcs;\n }\n\n setStartTime(time: number, updateDownstream: boolean = true): void {\n this._startTime = time;\n if (updateDownstream) {\n this.updateDownstreamStartTimes();\n }\n }\n\n getStartTime(): number {\n return this._startTime;\n }\n\n onBind(): void {\n // 在第一次绑定到Animate的时候触发\n }\n\n /**\n * 首次运行逻辑\n * 如果跳帧了就不一定会执行\n */\n onFirstRun(): void {\n // 首次运行逻辑\n }\n\n /**\n * 开始执行的时候调用\n * 如果跳帧了就不一定会执行\n */\n onStart(): void {\n if (!this._hasFirstRun) {\n this._hasFirstRun = true;\n // 获取上一步的属性值作为起始值\n this.fromProps = this.getLastProps();\n this.determineInterpolateUpdateFunction();\n this.tryPreventConflict();\n this.trySyncStartProps();\n this.onFirstRun();\n }\n }\n\n protected tryPreventConflict(): void {\n // 屏蔽掉之前动画冲突的属性\n const animate = this.animate;\n const target = this.target;\n target.animates.forEach((a: any) => {\n if (a === animate || a.priority > animate.priority) {\n return;\n }\n const fromProps = a.getStartProps();\n this.propKeys.forEach(key => {\n if (fromProps[key] != null) {\n a.preventAttr(key);\n }\n });\n });\n }\n\n /**\n * 删除自身属性,会直接从props等内容里删除掉\n */\n deleteSelfAttr(key: string): void {\n delete this.props[key];\n // fromProps在动画开始时才会计算,这时可能不在\n this.fromProps && delete this.fromProps[key];\n const index = this.propKeys.indexOf(key);\n if (index !== -1) {\n this.propKeys.splice(index, 1);\n this.interpolateUpdateFunctions?.splice(index, 1);\n }\n }\n\n /**\n * 尝试同步startProps,因为当前animate的startProps仅包含当前animate的信息,不排除过程中有其他animate的干扰\n * 所以为了避免属性突变,需要确保startProps的属性值是最新的\n */\n trySyncStartProps(): void {\n this.propKeys.forEach(key => {\n this.fromProps[key] = this.animate.target.getComputedAttribute(key);\n });\n }\n\n /**\n * 更新执行的时候调用\n * 如果跳帧了就不一定会执行\n */\n update(end: boolean, ratio: number, out: Record<string, any>): void {\n // TODO 需要修复,只有在开始的时候才调用\n this.onStart();\n if (!this.props || !this.propKeys) {\n return;\n }\n // 应用缓动函数\n const easedRatio = this.easing(ratio);\n this.animate.interpolateUpdateFunction\n ? this.animate.interpolateUpdateFunction(this.fromProps, this.props, easedRatio, this, this.target)\n : this.interpolateUpdateFunctions.forEach((func, index) => {\n // 如果这个属性被屏蔽了,直接跳过\n if (!this.animate.validAttr(this.propKeys[index])) {\n return;\n }\n const key = this.propKeys[index];\n const fromValue = this.fromProps[key];\n const toValue = this.props[key];\n func(key, fromValue, toValue, easedRatio, this, this.target);\n });\n this.onUpdate(end, easedRatio, out);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n // ...\n }\n\n /**\n * 结束执行的时候调用\n * 如果跳帧了就不一定会执行\n */\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n if (cb) {\n this._endCb = cb;\n } else if (this._endCb) {\n this.target.setAttributes(this.props);\n this._endCb(this.animate, this);\n }\n }\n\n /**\n * 获取结束的属性,包含前序的终值,是merge过的\n * @returns\n */\n getEndProps(): Record<string, any> {\n return this.props;\n }\n\n /**\n * 获取开始的属性,是前序的终值\n * @returns\n */\n getFromProps(): Record<string, any> {\n return this.fromProps;\n }\n\n /**\n * 获取结束的属性,包含前序的终值,是merge过的,同getEndProps\n * @returns\n */\n getMergedEndProps(): Record<string, any> | void {\n return this.getEndProps();\n }\n}\n\nexport class WaitStep extends Step {\n constructor(type: IAnimateStepType, props: Record<string, any>, duration: number, easing: EasingType) {\n super(type, props, duration, easing);\n }\n\n update(end: boolean, ratio: number, out: Record<string, any>): void {\n this.onStart();\n // 其他的不执行\n }\n\n determineInterpolateUpdateFunction(): void {\n return;\n }\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { EventEmitter } from '@visactor/vutils';
|
|
2
|
+
import type { IStage } from '@visactor/vrender-core';
|
|
3
|
+
import { type ITickHandler, type ITicker, STATUS } from '../intreface/ticker';
|
|
4
|
+
import type { ITimeline } from '../intreface/timeline';
|
|
5
|
+
export declare class DefaultTicker extends EventEmitter implements ITicker {
|
|
6
|
+
protected interval: number;
|
|
7
|
+
protected tickerHandler: ITickHandler;
|
|
8
|
+
protected status: STATUS;
|
|
9
|
+
protected lastFrameTime: number;
|
|
10
|
+
protected lastExecutionTime: number;
|
|
11
|
+
protected tickCounts: number;
|
|
12
|
+
protected stage: IStage;
|
|
13
|
+
timelines: ITimeline[];
|
|
14
|
+
autoStop: boolean;
|
|
15
|
+
constructor(stage: IStage);
|
|
16
|
+
init(): void;
|
|
17
|
+
addTimeline(timeline: ITimeline): void;
|
|
18
|
+
remTimeline(timeline: ITimeline): void;
|
|
19
|
+
getTimelines(): ITimeline[];
|
|
20
|
+
protected initHandler(): void;
|
|
21
|
+
protected setupTickHandler(): boolean;
|
|
22
|
+
setInterval(interval: number): void;
|
|
23
|
+
getInterval(): number;
|
|
24
|
+
setFPS(fps: number): void;
|
|
25
|
+
getFPS(): number;
|
|
26
|
+
tick(interval: number): void;
|
|
27
|
+
tickTo(t: number): void;
|
|
28
|
+
pause(): boolean;
|
|
29
|
+
resume(): boolean;
|
|
30
|
+
ifCanStop(): boolean;
|
|
31
|
+
start(force?: boolean): boolean;
|
|
32
|
+
stop(): void;
|
|
33
|
+
trySyncTickStatus(): void;
|
|
34
|
+
release(): void;
|
|
35
|
+
protected handleTick: (handler: ITickHandler, params?: {
|
|
36
|
+
once?: boolean;
|
|
37
|
+
}) => void;
|
|
38
|
+
protected _handlerTick: () => void;
|
|
39
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { EventEmitter } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
import { application, PerformanceRAF } from "@visactor/vrender-core";
|
|
4
|
+
|
|
5
|
+
import { STATUS } from "../intreface/ticker";
|
|
6
|
+
|
|
7
|
+
const performanceRAF = new PerformanceRAF;
|
|
8
|
+
|
|
9
|
+
class RAFTickHandler {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.released = !1;
|
|
12
|
+
}
|
|
13
|
+
tick(interval, cb) {
|
|
14
|
+
performanceRAF.addAnimationFrameCb((() => {
|
|
15
|
+
this.released || cb(this);
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
release() {
|
|
19
|
+
this.released = !0;
|
|
20
|
+
}
|
|
21
|
+
getTime() {
|
|
22
|
+
return Date.now();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export class DefaultTicker extends EventEmitter {
|
|
27
|
+
constructor(stage) {
|
|
28
|
+
super(), this.interval = 16, this.lastFrameTime = -1, this.lastExecutionTime = -1,
|
|
29
|
+
this.tickCounts = 0, this.timelines = [], this.autoStop = !0, this.handleTick = (handler, params) => {
|
|
30
|
+
const {once: once = !1} = null != params ? params : {};
|
|
31
|
+
if (this.ifCanStop()) return void this.stop();
|
|
32
|
+
const currentTime = handler.getTime();
|
|
33
|
+
(this.lastExecutionTime < 0 ? this.interval : currentTime - this.lastExecutionTime) >= this.interval && (this._handlerTick(),
|
|
34
|
+
this.lastExecutionTime = currentTime), once || handler.tick(this.interval, this.handleTick);
|
|
35
|
+
}, this._handlerTick = () => {
|
|
36
|
+
const time = this.tickerHandler.getTime();
|
|
37
|
+
let delta = 0;
|
|
38
|
+
this.lastFrameTime >= 0 && (delta = time - this.lastFrameTime), this.lastFrameTime = time,
|
|
39
|
+
this.status === STATUS.RUNNING && (this.tickCounts++, this.timelines.forEach((timeline => {
|
|
40
|
+
timeline.tick(delta);
|
|
41
|
+
})), this.emit("tick", delta));
|
|
42
|
+
}, this.init(), this.lastFrameTime = -1, this.lastExecutionTime = -1, this.tickCounts = 0,
|
|
43
|
+
this.stage = stage, this.autoStop = !0;
|
|
44
|
+
}
|
|
45
|
+
init() {
|
|
46
|
+
this.interval = 16, this.status = STATUS.INITIAL, application.global.hooks.onSetEnv.tap("graph-ticker", (() => {
|
|
47
|
+
this.initHandler();
|
|
48
|
+
})), application.global.env && this.initHandler();
|
|
49
|
+
}
|
|
50
|
+
addTimeline(timeline) {
|
|
51
|
+
this.timelines.push(timeline);
|
|
52
|
+
}
|
|
53
|
+
remTimeline(timeline) {
|
|
54
|
+
this.timelines = this.timelines.filter((t => t !== timeline));
|
|
55
|
+
}
|
|
56
|
+
getTimelines() {
|
|
57
|
+
return this.timelines;
|
|
58
|
+
}
|
|
59
|
+
initHandler() {
|
|
60
|
+
this.setupTickHandler();
|
|
61
|
+
}
|
|
62
|
+
setupTickHandler() {
|
|
63
|
+
const handler = new RAFTickHandler;
|
|
64
|
+
return this.tickerHandler && this.tickerHandler.release(), this.tickerHandler = handler,
|
|
65
|
+
!0;
|
|
66
|
+
}
|
|
67
|
+
setInterval(interval) {
|
|
68
|
+
this.interval = interval;
|
|
69
|
+
}
|
|
70
|
+
getInterval() {
|
|
71
|
+
return this.interval;
|
|
72
|
+
}
|
|
73
|
+
setFPS(fps) {
|
|
74
|
+
this.setInterval(1e3 / fps);
|
|
75
|
+
}
|
|
76
|
+
getFPS() {
|
|
77
|
+
return 1e3 / this.interval;
|
|
78
|
+
}
|
|
79
|
+
tick(interval) {
|
|
80
|
+
this.tickerHandler.tick(interval, (handler => {
|
|
81
|
+
this.handleTick(handler, {
|
|
82
|
+
once: !0
|
|
83
|
+
});
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
tickTo(t) {
|
|
87
|
+
this.tickerHandler.tickTo && this.tickerHandler.tickTo(t, (handler => {
|
|
88
|
+
this.handleTick(handler, {
|
|
89
|
+
once: !0
|
|
90
|
+
});
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
pause() {
|
|
94
|
+
return this.status !== STATUS.INITIAL && (this.status = STATUS.PAUSE, !0);
|
|
95
|
+
}
|
|
96
|
+
resume() {
|
|
97
|
+
return this.status !== STATUS.INITIAL && (this.status = STATUS.RUNNING, !0);
|
|
98
|
+
}
|
|
99
|
+
ifCanStop() {
|
|
100
|
+
if (this.autoStop) {
|
|
101
|
+
if (!this.timelines.length) return !0;
|
|
102
|
+
if (this.timelines.every((timeline => !timeline.isRunning()))) return !0;
|
|
103
|
+
}
|
|
104
|
+
return !1;
|
|
105
|
+
}
|
|
106
|
+
start(force = !1) {
|
|
107
|
+
if (this.status === STATUS.RUNNING) return !1;
|
|
108
|
+
if (!this.tickerHandler) return !1;
|
|
109
|
+
if (!force) {
|
|
110
|
+
if (this.status === STATUS.PAUSE) return !1;
|
|
111
|
+
if (this.ifCanStop()) return !1;
|
|
112
|
+
}
|
|
113
|
+
return this.status = STATUS.RUNNING, this.tickerHandler.tick(0, this.handleTick),
|
|
114
|
+
!0;
|
|
115
|
+
}
|
|
116
|
+
stop() {
|
|
117
|
+
this.status = STATUS.INITIAL, this.setupTickHandler(), this.lastFrameTime = -1,
|
|
118
|
+
this.lastExecutionTime = -1;
|
|
119
|
+
}
|
|
120
|
+
trySyncTickStatus() {
|
|
121
|
+
this.status === STATUS.INITIAL && this.timelines.some((timeline => timeline.isRunning())) ? this.start() : this.status === STATUS.RUNNING && this.timelines.every((timeline => !timeline.isRunning())) && this.stop();
|
|
122
|
+
}
|
|
123
|
+
release() {
|
|
124
|
+
var _a;
|
|
125
|
+
this.stop(), this.timelines = [], null === (_a = this.tickerHandler) || void 0 === _a || _a.release(),
|
|
126
|
+
this.tickerHandler = null, this.lastExecutionTime = -1;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=default-ticker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ticker/default-ticker.ts"],"names":[],"mappings":"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","file":"default-ticker.js","sourcesContent":["import { EventEmitter } from '@visactor/vutils';\nimport type { IStage } from '@visactor/vrender-core';\nimport { application, PerformanceRAF } from '@visactor/vrender-core';\nimport { type ITickHandler, type ITicker, STATUS } from '../intreface/ticker';\nimport type { ITimeline } from '../intreface/timeline';\n\nconst performanceRAF = new PerformanceRAF();\n\nclass RAFTickHandler implements ITickHandler {\n protected released: boolean = false;\n\n tick(interval: number, cb: (handler: ITickHandler) => void): void {\n performanceRAF.addAnimationFrameCb(() => {\n if (this.released) {\n return;\n }\n cb(this);\n });\n }\n\n release(): void {\n this.released = true;\n }\n\n getTime(): number {\n return Date.now();\n }\n}\n\n/**\n * Graph-based Ticker implementation\n * This ticker works directly with GraphManager instances without needing timeline adapters\n */\nexport class DefaultTicker extends EventEmitter implements ITicker {\n protected interval: number = 16;\n protected tickerHandler: ITickHandler;\n protected status: STATUS;\n protected lastFrameTime: number = -1;\n protected lastExecutionTime: number = -1; // Track the last time we actually executed a frame\n protected tickCounts: number = 0;\n protected stage: IStage;\n timelines: ITimeline[] = [];\n autoStop: boolean = true;\n\n constructor(stage: IStage) {\n super();\n this.init();\n this.lastFrameTime = -1;\n this.lastExecutionTime = -1;\n this.tickCounts = 0;\n this.stage = stage;\n this.autoStop = true;\n }\n\n init(): void {\n this.interval = 16;\n this.status = STATUS.INITIAL;\n application.global.hooks.onSetEnv.tap('graph-ticker', () => {\n this.initHandler();\n });\n if (application.global.env) {\n this.initHandler();\n }\n }\n\n addTimeline(timeline: ITimeline): void {\n this.timelines.push(timeline);\n }\n\n remTimeline(timeline: ITimeline): void {\n this.timelines = this.timelines.filter(t => t !== timeline);\n }\n\n getTimelines(): ITimeline[] {\n return this.timelines;\n }\n\n protected initHandler() {\n this.setupTickHandler();\n }\n\n /**\n * Set up the tick handler\n * @returns true if setup was successful, false otherwise\n */\n protected setupTickHandler(): boolean {\n const handler: ITickHandler = new RAFTickHandler();\n\n // Destroy the previous tick handler\n if (this.tickerHandler) {\n this.tickerHandler.release();\n }\n\n this.tickerHandler = handler;\n return true;\n }\n\n setInterval(interval: number): void {\n this.interval = interval;\n }\n\n getInterval(): number {\n return this.interval;\n }\n\n setFPS(fps: number): void {\n this.setInterval(1000 / fps);\n }\n\n getFPS(): number {\n return 1000 / this.interval;\n }\n\n tick(interval: number): void {\n this.tickerHandler.tick(interval, (handler: ITickHandler) => {\n this.handleTick(handler, { once: true });\n });\n }\n\n tickTo(t: number): void {\n if (!this.tickerHandler.tickTo) {\n return;\n }\n this.tickerHandler.tickTo(t, (handler: ITickHandler) => {\n this.handleTick(handler, { once: true });\n });\n }\n\n pause(): boolean {\n if (this.status === STATUS.INITIAL) {\n return false;\n }\n this.status = STATUS.PAUSE;\n return true;\n }\n\n resume(): boolean {\n if (this.status === STATUS.INITIAL) {\n return false;\n }\n this.status = STATUS.RUNNING;\n return true;\n }\n\n ifCanStop(): boolean {\n if (this.autoStop) {\n if (!this.timelines.length) {\n return true;\n }\n if (this.timelines.every(timeline => !timeline.isRunning())) {\n return true;\n }\n }\n return false;\n }\n\n start(force: boolean = false): boolean {\n if (this.status === STATUS.RUNNING) {\n return false;\n }\n if (!this.tickerHandler) {\n return false;\n }\n\n // 暂停中、或者应该停止的时候,就不执行\n if (!force) {\n if (this.status === STATUS.PAUSE) {\n return false;\n }\n if (this.ifCanStop()) {\n return false;\n }\n }\n\n this.status = STATUS.RUNNING;\n this.tickerHandler.tick(0, this.handleTick);\n return true;\n }\n\n stop(): void {\n // Reset the tick handler\n this.status = STATUS.INITIAL;\n this.setupTickHandler();\n this.lastFrameTime = -1;\n this.lastExecutionTime = -1;\n }\n\n /**\n * 用于自动启动或停止\n * 基于当前的graph managers检查是否需要启动或停止\n */\n trySyncTickStatus(): void {\n if (this.status === STATUS.INITIAL && this.timelines.some(timeline => timeline.isRunning())) {\n this.start();\n } else if (this.status === STATUS.RUNNING && this.timelines.every(timeline => !timeline.isRunning())) {\n this.stop();\n }\n }\n\n release(): void {\n this.stop();\n this.timelines = [];\n this.tickerHandler?.release();\n this.tickerHandler = null;\n this.lastExecutionTime = -1;\n }\n\n protected handleTick = (handler: ITickHandler, params?: { once?: boolean }): void => {\n const { once = false } = params ?? {};\n\n // 尝试停止\n if (this.ifCanStop()) {\n this.stop();\n return;\n }\n\n const currentTime = handler.getTime();\n\n // Check if enough time has passed since last execution based on the interval (FPS limit)\n const timeFromLastExecution = this.lastExecutionTime < 0 ? this.interval : currentTime - this.lastExecutionTime;\n\n // Only execute the frame if enough time has passed according to our interval/FPS setting\n if (timeFromLastExecution >= this.interval) {\n this._handlerTick();\n this.lastExecutionTime = currentTime;\n }\n\n if (!once) {\n handler.tick(this.interval, this.handleTick);\n }\n };\n\n protected _handlerTick = (): void => {\n // Specific execution function\n const tickerHandler = this.tickerHandler;\n const time = tickerHandler.getTime();\n\n // Time passed since last frame\n let delta = 0;\n if (this.lastFrameTime >= 0) {\n delta = time - this.lastFrameTime;\n }\n this.lastFrameTime = time;\n\n if (this.status !== STATUS.RUNNING) {\n return;\n }\n\n this.tickCounts++;\n\n // Update all graph managers\n this.timelines.forEach(timeline => {\n timeline.tick(delta);\n });\n\n this.emit('tick', delta);\n };\n}\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DefaultTicker } from "./default-ticker";
|
|
2
|
+
|
|
3
|
+
class ManualTickHandler {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.released = !1, this.startTime = -1, this.currentTime = -1;
|
|
6
|
+
}
|
|
7
|
+
tick(interval, cb) {
|
|
8
|
+
this.startTime < 0 && (this.startTime = 0), this.currentTime = this.startTime + interval,
|
|
9
|
+
cb(this);
|
|
10
|
+
}
|
|
11
|
+
release() {
|
|
12
|
+
this.released = !0;
|
|
13
|
+
}
|
|
14
|
+
getTime() {
|
|
15
|
+
return this.currentTime;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class ManualTicker extends DefaultTicker {
|
|
20
|
+
setupTickHandler() {
|
|
21
|
+
const handler = new ManualTickHandler;
|
|
22
|
+
return this.tickerHandler && this.tickerHandler.release(), this.tickerHandler = handler,
|
|
23
|
+
!0;
|
|
24
|
+
}
|
|
25
|
+
getTime() {
|
|
26
|
+
return this.tickerHandler.getTime();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=manual-ticker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ticker/manual-ticker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,iBAAiB;IAAvB;QACY,aAAQ,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAW,CAAC,CAAC,CAAC;QACvB,gBAAW,GAAW,CAAC,CAAC,CAAC;IAiBrC,CAAC;IAfC,IAAI,CAAC,QAAgB,EAAE,EAAmC;QACxD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC7C,EAAE,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,aAAa;IACnC,gBAAgB;QACxB,MAAM,OAAO,GAAiB,IAAI,iBAAiB,EAAE,CAAC;QAGtD,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;CACF","file":"manual-ticker.js","sourcesContent":["import type { ITickHandler } from '../intreface/ticker';\nimport { type ITicker } from '../intreface/ticker';\nimport { DefaultTicker } from './default-ticker';\n\nclass ManualTickHandler implements ITickHandler {\n protected released: boolean = false;\n protected startTime: number = -1;\n protected currentTime: number = -1;\n\n tick(interval: number, cb: (handler: ITickHandler) => void): void {\n if (this.startTime < 0) {\n this.startTime = 0;\n }\n this.currentTime = this.startTime + interval;\n cb(this);\n }\n\n release(): void {\n this.released = true;\n }\n\n getTime(): number {\n return this.currentTime;\n }\n}\n\nexport class ManualTicker extends DefaultTicker implements ITicker {\n protected setupTickHandler(): boolean {\n const handler: ITickHandler = new ManualTickHandler();\n\n // Destroy the previous tick handler\n if (this.tickerHandler) {\n this.tickerHandler.release();\n }\n\n this.tickerHandler = handler;\n return true;\n }\n\n getTime(): number {\n return this.tickerHandler.getTime();\n }\n}\n"]}
|
package/es/timeline.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { IAnimate } from './intreface/animate';
|
|
2
|
+
import type { ITimeline } from './intreface/timeline';
|
|
3
|
+
export declare class DefaultTimeline implements ITimeline {
|
|
4
|
+
id: number;
|
|
5
|
+
protected animates: IAnimate[];
|
|
6
|
+
protected ticker: any;
|
|
7
|
+
protected paused: boolean;
|
|
8
|
+
protected _playSpeed: number;
|
|
9
|
+
protected _totalDuration: number;
|
|
10
|
+
protected _startTime: number;
|
|
11
|
+
protected _currentTime: number;
|
|
12
|
+
protected _endAnimatePtr: number;
|
|
13
|
+
isGlobal?: boolean;
|
|
14
|
+
get animateCount(): number;
|
|
15
|
+
constructor();
|
|
16
|
+
isRunning(): boolean;
|
|
17
|
+
forEachAccessAnimate(cb: (animate: IAnimate, index: number) => void): void;
|
|
18
|
+
addAnimate(animate: IAnimate): void;
|
|
19
|
+
pause(): void;
|
|
20
|
+
resume(): void;
|
|
21
|
+
tick(delta: number): void;
|
|
22
|
+
clear(): void;
|
|
23
|
+
removeAnimate(animate: IAnimate, release?: boolean, index?: number): void;
|
|
24
|
+
protected recalculateTotalDuration(): void;
|
|
25
|
+
getTotalDuration(): number;
|
|
26
|
+
getPlaySpeed(): number;
|
|
27
|
+
setPlaySpeed(speed: number): void;
|
|
28
|
+
getPlayState(): 'playing' | 'paused' | 'stopped';
|
|
29
|
+
setStartTime(time: number): void;
|
|
30
|
+
getStartTime(): number;
|
|
31
|
+
getCurrentTime(): number;
|
|
32
|
+
setCurrentTime(time: number): void;
|
|
33
|
+
}
|
|
34
|
+
export declare const defaultTimeline: DefaultTimeline;
|
package/es/timeline.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { AnimateStatus, Generator } from "@visactor/vrender-core";
|
|
2
|
+
|
|
3
|
+
export class DefaultTimeline {
|
|
4
|
+
get animateCount() {
|
|
5
|
+
return this.animates.length;
|
|
6
|
+
}
|
|
7
|
+
constructor() {
|
|
8
|
+
this.animates = [], this._playSpeed = 1, this._totalDuration = 0, this._startTime = 0,
|
|
9
|
+
this._currentTime = 0, this._endAnimatePtr = -1, this.id = Generator.GenAutoIncrementId(),
|
|
10
|
+
this.animates = [], this.paused = !1;
|
|
11
|
+
}
|
|
12
|
+
isRunning() {
|
|
13
|
+
return !this.paused && this._endAnimatePtr >= 0;
|
|
14
|
+
}
|
|
15
|
+
forEachAccessAnimate(cb) {
|
|
16
|
+
for (let i = 0; i <= this._endAnimatePtr; i++) cb(this.animates[i], i);
|
|
17
|
+
}
|
|
18
|
+
addAnimate(animate) {
|
|
19
|
+
this.animates.push(animate), this._endAnimatePtr++, this.animates[this.animates.length - 1] = this.animates[this._endAnimatePtr],
|
|
20
|
+
this.animates[this._endAnimatePtr] = animate, this._totalDuration = Math.max(this._totalDuration, animate.getStartTime() + animate.getDuration());
|
|
21
|
+
}
|
|
22
|
+
pause() {
|
|
23
|
+
this.paused = !0;
|
|
24
|
+
}
|
|
25
|
+
resume() {
|
|
26
|
+
this.paused = !1;
|
|
27
|
+
}
|
|
28
|
+
tick(delta) {
|
|
29
|
+
if (this.paused) return;
|
|
30
|
+
const scaledDelta = delta * this._playSpeed;
|
|
31
|
+
this._currentTime += scaledDelta, this.forEachAccessAnimate(((animate, i) => {
|
|
32
|
+
animate.status === AnimateStatus.END ? this.removeAnimate(animate, !0, i) : animate.status !== AnimateStatus.RUNNING && animate.status !== AnimateStatus.INITIAL || animate.advance(scaledDelta);
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
clear() {
|
|
36
|
+
this.forEachAccessAnimate((animate => {
|
|
37
|
+
animate.release();
|
|
38
|
+
})), this.animates = [], this._totalDuration = 0;
|
|
39
|
+
}
|
|
40
|
+
removeAnimate(animate, release = !0, index) {
|
|
41
|
+
this._endAnimatePtr < 0 || (release && (animate._onRemove && animate._onRemove.forEach((cb => cb())),
|
|
42
|
+
animate.release()), index = null != index ? index : this.animates.indexOf(animate),
|
|
43
|
+
this.animates[index] = this.animates[this._endAnimatePtr], this._endAnimatePtr--);
|
|
44
|
+
}
|
|
45
|
+
recalculateTotalDuration() {
|
|
46
|
+
this._totalDuration = 0, this.animates.forEach((animate => {
|
|
47
|
+
this._totalDuration = Math.max(this._totalDuration, animate.getStartTime() + animate.getDuration());
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
getTotalDuration() {
|
|
51
|
+
return this._totalDuration;
|
|
52
|
+
}
|
|
53
|
+
getPlaySpeed() {
|
|
54
|
+
return this._playSpeed;
|
|
55
|
+
}
|
|
56
|
+
setPlaySpeed(speed) {
|
|
57
|
+
this._playSpeed = speed;
|
|
58
|
+
}
|
|
59
|
+
getPlayState() {
|
|
60
|
+
return this.paused ? "paused" : 0 === this.animateCount ? "stopped" : "playing";
|
|
61
|
+
}
|
|
62
|
+
setStartTime(time) {
|
|
63
|
+
this._startTime = time;
|
|
64
|
+
}
|
|
65
|
+
getStartTime() {
|
|
66
|
+
return this._startTime;
|
|
67
|
+
}
|
|
68
|
+
getCurrentTime() {
|
|
69
|
+
return this._currentTime;
|
|
70
|
+
}
|
|
71
|
+
setCurrentTime(time) {
|
|
72
|
+
this._currentTime = time;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export const defaultTimeline = new DefaultTimeline;
|
|
77
|
+
|
|
78
|
+
defaultTimeline.isGlobal = !0;
|
|
79
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/timeline.ts"],"names":[],"mappings":"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","file":"timeline.js","sourcesContent":["import { AnimateStatus, Generator } from '@visactor/vrender-core';\nimport type { IAnimate } from './intreface/animate';\nimport type { ITimeline } from './intreface/timeline';\n\nexport class DefaultTimeline implements ITimeline {\n declare id: number;\n protected animates: IAnimate[] = [];\n protected declare ticker: any;\n protected declare paused: boolean;\n\n // 添加必要的属性\n protected _playSpeed: number = 1;\n protected _totalDuration: number = 0;\n protected _startTime: number = 0;\n protected _currentTime: number = 0;\n\n // 0 ... _endAnimatePtr ... animates.length\n // [0, _endAnimatePtr] 表示正在运行的动画\n // (_endAnimatePtr, animates.length) 表示已经结束的动画\n protected _endAnimatePtr: number = -1;\n\n declare isGlobal?: boolean;\n\n get animateCount() {\n return this.animates.length;\n }\n\n constructor() {\n this.id = Generator.GenAutoIncrementId();\n this.animates = [];\n this.paused = false;\n }\n\n isRunning() {\n return !this.paused && this._endAnimatePtr >= 0;\n }\n\n forEachAccessAnimate(cb: (animate: IAnimate, index: number) => void) {\n for (let i = 0; i <= this._endAnimatePtr; i++) {\n cb(this.animates[i], i);\n }\n }\n\n addAnimate(animate: IAnimate) {\n this.animates.push(animate);\n // 交换位置\n this._endAnimatePtr++;\n this.animates[this.animates.length - 1] = this.animates[this._endAnimatePtr];\n this.animates[this._endAnimatePtr] = animate;\n // 更新总时长\n this._totalDuration = Math.max(this._totalDuration, animate.getStartTime() + animate.getDuration());\n }\n\n pause() {\n this.paused = true;\n }\n\n resume() {\n this.paused = false;\n }\n\n tick(delta: number) {\n if (this.paused) {\n return;\n }\n\n // 应用播放速度\n const scaledDelta = delta * this._playSpeed;\n\n // 更新当前时间\n this._currentTime += scaledDelta;\n\n this.forEachAccessAnimate((animate, i) => {\n if (animate.status === AnimateStatus.END) {\n this.removeAnimate(animate, true, i);\n } else if (animate.status === AnimateStatus.RUNNING || animate.status === AnimateStatus.INITIAL) {\n animate.advance(scaledDelta);\n }\n });\n }\n\n clear() {\n this.forEachAccessAnimate(animate => {\n animate.release();\n });\n this.animates = [];\n this._totalDuration = 0;\n }\n\n removeAnimate(animate: IAnimate, release: boolean = true, index?: number) {\n if (this._endAnimatePtr < 0) {\n return;\n }\n if (release) {\n animate._onRemove && animate._onRemove.forEach(cb => cb());\n animate.release();\n }\n\n index = index ?? this.animates.indexOf(animate);\n // 交换位置\n this.animates[index] = this.animates[this._endAnimatePtr];\n this._endAnimatePtr--;\n return;\n }\n\n // 重新计算总时长\n protected recalculateTotalDuration() {\n this._totalDuration = 0;\n this.animates.forEach(animate => {\n this._totalDuration = Math.max(this._totalDuration, animate.getStartTime() + animate.getDuration());\n });\n }\n\n getTotalDuration() {\n return this._totalDuration;\n }\n\n getPlaySpeed() {\n return this._playSpeed;\n }\n\n setPlaySpeed(speed: number) {\n this._playSpeed = speed;\n }\n\n // 实现ITimeline接口所需的其他方法\n getPlayState(): 'playing' | 'paused' | 'stopped' {\n if (this.paused) {\n return 'paused';\n }\n if (this.animateCount === 0) {\n return 'stopped';\n }\n return 'playing';\n }\n\n setStartTime(time: number) {\n this._startTime = time;\n }\n\n getStartTime() {\n return this._startTime;\n }\n\n getCurrentTime() {\n return this._currentTime;\n }\n\n setCurrentTime(time: number) {\n this._currentTime = time;\n }\n}\n\n// 不会使用,存粹做临时存储用,请一定要放置到stage中才行\nexport const defaultTimeline = new DefaultTimeline();\ndefaultTimeline.isGlobal = true;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generatorPathEasingFunc(path: string): (x: number) => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CurveContext, CustomPath2D } from "@visactor/vrender-core";
|
|
2
|
+
|
|
3
|
+
export function generatorPathEasingFunc(path) {
|
|
4
|
+
const customPath = new CustomPath2D;
|
|
5
|
+
return customPath.setCtx(new CurveContext(customPath)), customPath.fromString(path, 0, 0, 1, 1),
|
|
6
|
+
x => customPath.getYAt(x);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=easing-func.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/easing-func.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;IACtC,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAExC,OAAO,CAAC,CAAS,EAAE,EAAE;QACnB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC","file":"easing-func.js","sourcesContent":["import { CurveContext, CustomPath2D } from '@visactor/vrender-core';\n\nexport function generatorPathEasingFunc(path: string) {\n const customPath = new CustomPath2D();\n customPath.setCtx(new CurveContext(customPath));\n customPath.fromString(path, 0, 0, 1, 1);\n\n return (x: number) => {\n return customPath.getYAt(x);\n };\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export declare class Easing {
|
|
2
|
+
private constructor();
|
|
3
|
+
static linear(t: number): number;
|
|
4
|
+
static none(): typeof Easing.linear;
|
|
5
|
+
static get(amount: number): (t: number) => number;
|
|
6
|
+
static getPowIn(pow: number): (t: number) => number;
|
|
7
|
+
static getPowOut(pow: number): (t: number) => number;
|
|
8
|
+
static getPowInOut(pow: number): (t: number) => number;
|
|
9
|
+
static quadIn: (t: number) => number;
|
|
10
|
+
static quadOut: (t: number) => number;
|
|
11
|
+
static quadInOut: (t: number) => number;
|
|
12
|
+
static cubicIn: (t: number) => number;
|
|
13
|
+
static cubicOut: (t: number) => number;
|
|
14
|
+
static cubicInOut: (t: number) => number;
|
|
15
|
+
static quartIn: (t: number) => number;
|
|
16
|
+
static quartOut: (t: number) => number;
|
|
17
|
+
static quartInOut: (t: number) => number;
|
|
18
|
+
static quintIn: (t: number) => number;
|
|
19
|
+
static quintOut: (t: number) => number;
|
|
20
|
+
static quintInOut: (t: number) => number;
|
|
21
|
+
static getBackIn(amount: number): (t: number) => number;
|
|
22
|
+
static getBackOut(amount: number): (t: number) => number;
|
|
23
|
+
static getBackInOut(amount: number): (t: number) => number;
|
|
24
|
+
static backIn: (t: number) => number;
|
|
25
|
+
static backOut: (t: number) => number;
|
|
26
|
+
static backInOut: (t: number) => number;
|
|
27
|
+
static sineIn(t: number): number;
|
|
28
|
+
static sineOut(t: number): number;
|
|
29
|
+
static sineInOut(t: number): number;
|
|
30
|
+
static expoIn(t: number): number;
|
|
31
|
+
static expoOut(t: number): number;
|
|
32
|
+
static expoInOut(t: number): number;
|
|
33
|
+
static circIn(t: number): number;
|
|
34
|
+
static circOut(t: number): number;
|
|
35
|
+
static circInOut(t: number): number;
|
|
36
|
+
static bounceOut(t: number): number;
|
|
37
|
+
static bounceIn(t: number): number;
|
|
38
|
+
static bounceInOut(t: number): number;
|
|
39
|
+
static getElasticIn(amplitude: number, period: number): (t: number) => number;
|
|
40
|
+
static getElasticOut(amplitude: number, period: number): (t: number) => number;
|
|
41
|
+
static getElasticInOut(amplitude: number, period: number): (t: number) => number;
|
|
42
|
+
static elasticIn: (t: number) => number;
|
|
43
|
+
static elasticOut: (t: number) => number;
|
|
44
|
+
static elasticInOut: (t: number) => number;
|
|
45
|
+
static easeInOutQuad: (t: number) => number;
|
|
46
|
+
static easeOutElastic: (x: number) => number;
|
|
47
|
+
static easeInOutElastic: (x: number) => number;
|
|
48
|
+
static registerFunc(name: string, func: (t: number) => number): void;
|
|
49
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { pi2 } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
export class Easing {
|
|
4
|
+
constructor() {}
|
|
5
|
+
static linear(t) {
|
|
6
|
+
return t;
|
|
7
|
+
}
|
|
8
|
+
static none() {
|
|
9
|
+
return this.linear;
|
|
10
|
+
}
|
|
11
|
+
static get(amount) {
|
|
12
|
+
return amount < -1 ? amount = -1 : amount > 1 && (amount = 1), function(t) {
|
|
13
|
+
return 0 === amount ? t : amount < 0 ? t * (t * -amount + 1 + amount) : t * ((2 - t) * amount + (1 - amount));
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
static getPowIn(pow) {
|
|
17
|
+
return function(t) {
|
|
18
|
+
return Math.pow(t, pow);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
static getPowOut(pow) {
|
|
22
|
+
return function(t) {
|
|
23
|
+
return 1 - Math.pow(1 - t, pow);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
static getPowInOut(pow) {
|
|
27
|
+
return function(t) {
|
|
28
|
+
return (t *= 2) < 1 ? .5 * Math.pow(t, pow) : 1 - .5 * Math.abs(Math.pow(2 - t, pow));
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
static getBackIn(amount) {
|
|
32
|
+
return function(t) {
|
|
33
|
+
return t * t * ((amount + 1) * t - amount);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
static getBackOut(amount) {
|
|
37
|
+
return function(t) {
|
|
38
|
+
return --t * t * ((amount + 1) * t + amount) + 1;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
static getBackInOut(amount) {
|
|
42
|
+
return amount *= 1.525, function(t) {
|
|
43
|
+
return (t *= 2) < 1 ? t * t * ((amount + 1) * t - amount) * .5 : .5 * ((t -= 2) * t * ((amount + 1) * t + amount) + 2);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
static sineIn(t) {
|
|
47
|
+
return 1 - Math.cos(t * Math.PI / 2);
|
|
48
|
+
}
|
|
49
|
+
static sineOut(t) {
|
|
50
|
+
return Math.sin(t * Math.PI / 2);
|
|
51
|
+
}
|
|
52
|
+
static sineInOut(t) {
|
|
53
|
+
return -(Math.cos(Math.PI * t) - 1) / 2;
|
|
54
|
+
}
|
|
55
|
+
static expoIn(t) {
|
|
56
|
+
return 0 === t ? 0 : Math.pow(2, 10 * t - 10);
|
|
57
|
+
}
|
|
58
|
+
static expoOut(t) {
|
|
59
|
+
return 1 === t ? 1 : 1 - Math.pow(2, -10 * t);
|
|
60
|
+
}
|
|
61
|
+
static expoInOut(t) {
|
|
62
|
+
return 0 === t ? 0 : 1 === t ? 1 : t < .5 ? Math.pow(2, 20 * t - 10) / 2 : (2 - Math.pow(2, -20 * t + 10)) / 2;
|
|
63
|
+
}
|
|
64
|
+
static circIn(t) {
|
|
65
|
+
return -(Math.sqrt(1 - t * t) - 1);
|
|
66
|
+
}
|
|
67
|
+
static circOut(t) {
|
|
68
|
+
return Math.sqrt(1 - --t * t);
|
|
69
|
+
}
|
|
70
|
+
static circInOut(t) {
|
|
71
|
+
return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
|
|
72
|
+
}
|
|
73
|
+
static bounceOut(t) {
|
|
74
|
+
return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
|
|
75
|
+
}
|
|
76
|
+
static bounceIn(t) {
|
|
77
|
+
return 1 - Easing.bounceOut(1 - t);
|
|
78
|
+
}
|
|
79
|
+
static bounceInOut(t) {
|
|
80
|
+
return t < .5 ? .5 * Easing.bounceIn(2 * t) : .5 * Easing.bounceOut(2 * t - 1) + .5;
|
|
81
|
+
}
|
|
82
|
+
static getElasticIn(amplitude, period) {
|
|
83
|
+
return function(t) {
|
|
84
|
+
if (0 === t || 1 === t) return t;
|
|
85
|
+
const s = period / pi2 * Math.asin(1 / amplitude);
|
|
86
|
+
return -amplitude * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * pi2 / period);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
static getElasticOut(amplitude, period) {
|
|
90
|
+
return function(t) {
|
|
91
|
+
if (0 === t || 1 === t) return t;
|
|
92
|
+
const s = period / pi2 * Math.asin(1 / amplitude);
|
|
93
|
+
return amplitude * Math.pow(2, -10 * t) * Math.sin((t - s) * pi2 / period) + 1;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
static getElasticInOut(amplitude, period) {
|
|
97
|
+
return function(t) {
|
|
98
|
+
const s = period / pi2 * Math.asin(1 / amplitude);
|
|
99
|
+
return (t *= 2) < 1 ? amplitude * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * pi2 / period) * -.5 : amplitude * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * pi2 / period) * .5 + 1;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
static registerFunc(name, func) {
|
|
103
|
+
Easing[name] = func;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function flicker(t, n) {
|
|
108
|
+
const step = 1 / n;
|
|
109
|
+
let flag = 1;
|
|
110
|
+
for (;t > step; ) t -= step, flag *= -1;
|
|
111
|
+
const v = flag * t / step;
|
|
112
|
+
return v > 0 ? v : 1 + v;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
Easing.quadIn = Easing.getPowIn(2), Easing.quadOut = Easing.getPowOut(2), Easing.quadInOut = Easing.getPowInOut(2),
|
|
116
|
+
Easing.cubicIn = Easing.getPowIn(3), Easing.cubicOut = Easing.getPowOut(3), Easing.cubicInOut = Easing.getPowInOut(3),
|
|
117
|
+
Easing.quartIn = Easing.getPowIn(4), Easing.quartOut = Easing.getPowOut(4), Easing.quartInOut = Easing.getPowInOut(4),
|
|
118
|
+
Easing.quintIn = Easing.getPowIn(5), Easing.quintOut = Easing.getPowOut(5), Easing.quintInOut = Easing.getPowInOut(5),
|
|
119
|
+
Easing.backIn = Easing.getBackIn(1.7), Easing.backOut = Easing.getBackOut(1.7),
|
|
120
|
+
Easing.backInOut = Easing.getBackInOut(1.7), Easing.elasticIn = Easing.getElasticIn(1, .3),
|
|
121
|
+
Easing.elasticOut = Easing.getElasticOut(1, .3), Easing.elasticInOut = Easing.getElasticInOut(1, .3 * 1.5),
|
|
122
|
+
Easing.easeInOutQuad = t => (t /= .5) < 1 ? .5 * Math.pow(t, 2) : -.5 * ((t -= 2) * t - 2),
|
|
123
|
+
Easing.easeOutElastic = x => {
|
|
124
|
+
const c4 = 2 * Math.PI / 3;
|
|
125
|
+
return 0 === x ? 0 : 1 === x ? 1 : Math.pow(2, -10 * x) * Math.sin((10 * x - .75) * c4) + 1;
|
|
126
|
+
}, Easing.easeInOutElastic = x => {
|
|
127
|
+
const c5 = 2 * Math.PI / 4.5;
|
|
128
|
+
return 0 === x ? 0 : 1 === x ? 1 : x < .5 ? -Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
for (let i = 0; i < 10; i++) Easing[`flicker${i}`] = t => flicker(t, i);
|
|
132
|
+
|
|
133
|
+
for (let i = 2; i < 10; i++) Easing[`aIn${i}`] = t => i * t * t + (1 - i) * t;
|
|
134
|
+
//# sourceMappingURL=easing.js.map
|