12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import easingFuncs from './easing.js';
- import { isFunction, noop } from '../core/util.js';
- import { createCubicEasingFunc } from './cubicEasing.js';
- var Clip = (function () {
- function Clip(opts) {
- this._inited = false;
- this._startTime = 0;
- this._pausedTime = 0;
- this._paused = false;
- this._life = opts.life || 1000;
- this._delay = opts.delay || 0;
- this.loop = opts.loop || false;
- this.onframe = opts.onframe || noop;
- this.ondestroy = opts.ondestroy || noop;
- this.onrestart = opts.onrestart || noop;
- opts.easing && this.setEasing(opts.easing);
- }
- Clip.prototype.step = function (globalTime, deltaTime) {
- if (!this._inited) {
- this._startTime = globalTime + this._delay;
- this._inited = true;
- }
- if (this._paused) {
- this._pausedTime += deltaTime;
- return;
- }
- var life = this._life;
- var elapsedTime = globalTime - this._startTime - this._pausedTime;
- var percent = elapsedTime / life;
- if (percent < 0) {
- percent = 0;
- }
- percent = Math.min(percent, 1);
- var easingFunc = this.easingFunc;
- var schedule = easingFunc ? easingFunc(percent) : percent;
- this.onframe(schedule);
- if (percent === 1) {
- if (this.loop) {
- var remainder = elapsedTime % life;
- this._startTime = globalTime - remainder;
- this._pausedTime = 0;
- this.onrestart();
- }
- else {
- return true;
- }
- }
- return false;
- };
- Clip.prototype.pause = function () {
- this._paused = true;
- };
- Clip.prototype.resume = function () {
- this._paused = false;
- };
- Clip.prototype.setEasing = function (easing) {
- this.easing = easing;
- this.easingFunc = isFunction(easing)
- ? easing
- : easingFuncs[easing] || createCubicEasingFunc(easing);
- };
- return Clip;
- }());
- export default Clip;
|