| 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; |