123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- var easingFuncs = require("./easing");
- function Clip(options) {
- this._target = options.target;
- this._life = options.life || 1000;
- this._delay = options.delay || 0;
-
- this._initialized = false;
- this.loop = options.loop == null ? false : options.loop;
- this.gap = options.gap || 0;
- this.easing = options.easing || 'Linear';
- this.onframe = options.onframe;
- this.ondestroy = options.ondestroy;
- this.onrestart = options.onrestart;
- this._pausedTime = 0;
- this._paused = false;
- }
- Clip.prototype = {
- constructor: Clip,
- step: function (globalTime, deltaTime) {
-
-
- if (!this._initialized) {
- this._startTime = globalTime + this._delay;
- this._initialized = true;
- }
- if (this._paused) {
- this._pausedTime += deltaTime;
- return;
- }
- var percent = (globalTime - this._startTime - this._pausedTime) / this._life;
- if (percent < 0) {
- return;
- }
- percent = Math.min(percent, 1);
- var easing = this.easing;
- var easingFunc = typeof easing === 'string' ? easingFuncs[easing] : easing;
- var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;
- this.fire('frame', schedule);
- if (percent === 1) {
- if (this.loop) {
- this.restart(globalTime);
-
- return 'restart';
- }
-
- this._needsRemove = true;
- return 'destroy';
- }
- return null;
- },
- restart: function (globalTime) {
- var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;
- this._startTime = globalTime - remainder + this.gap;
- this._pausedTime = 0;
- this._needsRemove = false;
- },
- fire: function (eventType, arg) {
- eventType = 'on' + eventType;
- if (this[eventType]) {
- this[eventType](this._target, arg);
- }
- },
- pause: function () {
- this._paused = true;
- },
- resume: function () {
- this._paused = false;
- }
- };
- var _default = Clip;
- module.exports = _default;
|