@eva/plugin-renderer-sprite-animation 1.2.2-alpha.1 → 1.2.2-alpha.5

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.
@@ -238,10 +238,12 @@ var _EVA_IIFE_spriteAnimation = function (exports, eva_js, pluginRenderer, rende
238
238
  _this.resource = '';
239
239
  _this.autoPlay = true;
240
240
  _this.speed = 100;
241
+ _this.forwards = false;
241
242
  _this.waitPlay = false;
242
243
  _this.waitStop = false;
243
244
  _this.times = Infinity;
244
245
  _this.count = 0;
246
+ _this.complete = false;
245
247
  return _this;
246
248
  }
247
249
 
@@ -251,7 +253,13 @@ var _EVA_IIFE_spriteAnimation = function (exports, eva_js, pluginRenderer, rende
251
253
  obj && _extends(this, obj);
252
254
  this.on('loop', function () {
253
255
  if (++_this.count >= _this.times) {
254
- _this.animate.stop();
256
+ if (_this.forwards) {
257
+ _this.gotoAndStop(_this.totalFrames - 1);
258
+ } else {
259
+ _this.animate.stop();
260
+ }
261
+
262
+ _this.complete = true;
255
263
 
256
264
  _this.emit('complete');
257
265
  }
@@ -272,8 +280,13 @@ var _EVA_IIFE_spriteAnimation = function (exports, eva_js, pluginRenderer, rende
272
280
  if (!this.animate) {
273
281
  this.waitPlay = true;
274
282
  } else {
283
+ if (this.complete) {
284
+ this.gotoAndStop(0);
285
+ }
286
+
275
287
  this.animate.play();
276
288
  this.count = 0;
289
+ this.complete = false;
277
290
  }
278
291
  };
279
292
 
@@ -314,6 +327,24 @@ var _EVA_IIFE_spriteAnimation = function (exports, eva_js, pluginRenderer, rende
314
327
  this.animate.gotoAndStop(frameNumber);
315
328
  };
316
329
 
330
+ Object.defineProperty(SpriteAnimation.prototype, "currentFrame", {
331
+ get: function get() {
332
+ var _a, _b;
333
+
334
+ return (_b = (_a = this.animate) === null || _a === void 0 ? void 0 : _a.animatedSprite) === null || _b === void 0 ? void 0 : _b.currentFrame;
335
+ },
336
+ enumerable: false,
337
+ configurable: true
338
+ });
339
+ Object.defineProperty(SpriteAnimation.prototype, "totalFrames", {
340
+ get: function get() {
341
+ var _a, _b;
342
+
343
+ return (_b = (_a = this.animate) === null || _a === void 0 ? void 0 : _a.animatedSprite) === null || _b === void 0 ? void 0 : _b.totalFrames;
344
+ },
345
+ enumerable: false,
346
+ configurable: true
347
+ });
317
348
  SpriteAnimation.componentName = 'SpriteAnimation';
318
349
 
319
350
  __decorate([type('string')], SpriteAnimation.prototype, "resource", void 0);
@@ -322,6 +353,8 @@ var _EVA_IIFE_spriteAnimation = function (exports, eva_js, pluginRenderer, rende
322
353
 
323
354
  __decorate([type('number'), step(10)], SpriteAnimation.prototype, "speed", void 0);
324
355
 
356
+ __decorate([type('boolean')], SpriteAnimation.prototype, "forwards", void 0);
357
+
325
358
  return SpriteAnimation;
326
359
  }(eva_js.Component);
327
360
 
@@ -1 +1 @@
1
- function _extends(){return(_extends=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var _EVA_IIFE_spriteAnimation=function(t,e,n,r,o){"use strict";var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function a(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function s(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}function c(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{c(r.next(t))}catch(t){i(t)}}function s(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}c((r=r.apply(t,e||[])).next())}))}function p(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function u(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function l(t,e){return t.constructor.IDEProps||(t.constructor.IDEProps={}),t.constructor.IDEProps[e]||(t.constructor.IDEProps[e]={}),t.constructor.IDEProps[e]}function f(t){return function(e,n){var r=l(e,n);r.key=n,r.type=t}}function m(t){return function(e,n){l(e,n).step=t}}var h=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.resource="",e.autoPlay=!0,e.speed=100,e.waitPlay=!1,e.waitStop=!1,e.times=1/0,e.count=0,e}return a(e,t),e.prototype.init=function(t){var e=this;t&&_extends(this,t),this.on("loop",(function(){++e.count>=e.times&&(e.animate.stop(),e.emit("complete"))}))},e.prototype.play=function(t){void 0===t&&(t=1/0),0!==t&&(this.times=t,this.animate?(this.animate.play(),this.count=0):this.waitPlay=!0)},e.prototype.stop=function(){this.animate?this.animate.stop():this.waitStop=!0},Object.defineProperty(e.prototype,"animate",{get:function(){return this._animate},set:function(t){this._animate=t,this.waitPlay&&(this.waitPlay=!1,this.play(this.times)),this.waitStop&&(this.waitStop=!1,this.stop())},enumerable:!1,configurable:!0}),e.prototype.gotoAndPlay=function(t){this.animate.gotoAndPlay(t)},e.prototype.gotoAndStop=function(t){this.animate.gotoAndStop(t)},e.componentName="SpriteAnimation",s([f("string")],e.prototype,"resource",void 0),s([f("boolean")],e.prototype,"autoPlay",void 0),s([f("number"),m(10)],e.prototype,"speed",void 0),e}(e.Component),d="_s|r|c_";e.resource.registerInstance(e.RESOURCE_TYPE.SPRITE_ANIMATION,(function(t){var e=t.name,n=t.data;return new Promise((function(t){var r,i,a=n.json,s=o.BaseTexture.from(n.image),c=a.frames||{},p=a.animations||{},l={};for(var f in c){l[e+d+f]=c[f]}for(var f in p){var m=[];if(p[f]&&p[f].length>=0)try{for(var h=(r=void 0,u(p[f])),y=h.next();!y.done;y=h.next()){var v=y.value,g=e+d+v;m.push(g)}}catch(t){r={error:t}}finally{try{y&&!y.done&&(i=h.return)&&i.call(h)}finally{if(r)throw r.error}}p[f]=m}a.frames=l;var b=new o.Spritesheet(s,a);b.parse((function(){var e=b.textures,n=[];for(var r in e)n.push(e[r]);t(n)}))}))})),e.resource.registerDestroy(e.RESOURCE_TYPE.SPRITE_ANIMATION,(function(t){var e,n,r=t.instance;if(r)try{for(var o=u(r),i=o.next();!i.done;i=o.next()){i.value.destroy(!0)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}}));var y=function(t){function o(){var e=null!==t&&t.apply(this,arguments)||this;return e.name="SpriteAnimation",e.animates={},e.autoPlay={},e}return a(o,t),o.prototype.init=function(){this.renderSystem=this.game.getSystem(n.RendererSystem),this.renderSystem.rendererManager.register(this)},o.prototype.rendererUpdate=function(t){var e=t.transform.size,n=e.width,r=e.height;this.animates[t.id]&&(this.animates[t.id].animatedSprite.width=n,this.animates[t.id].animatedSprite.height=r)},o.prototype.componentChanged=function(t){return c(this,void 0,void 0,(function(){var n,r,o;return p(this,(function(i){switch(i.label){case 0:return"SpriteAnimation"!==t.componentName?[3,7]:(n=t.component,this.autoPlay[t.gameObject.id]=n.autoPlay,t.type!==e.OBSERVER_TYPE.ADD?[3,2]:[4,e.resource.getResource(n.resource)]);case 1:return(r=i.sent().instance)||console.error("GameObject:"+t.gameObject.name+"'s Img resource load error"),this.add({frames:r,id:t.gameObject.id,component:n}),[3,7];case 2:return t.type!==e.OBSERVER_TYPE.CHANGE?[3,6]:t.prop&&"speed"===t.prop.prop[0]?(this.animates[t.gameObject.id].speed=1e3/60/n.speed,[3,5]):[3,3];case 3:return[4,e.resource.getResource(n.resource)];case 4:(o=i.sent().instance)||console.error("GameObject:"+t.gameObject.name+"'s Img resource load error"),this.change({frames:o,id:t.gameObject.id,component:n}),i.label=5;case 5:return[3,7];case 6:t.type===e.OBSERVER_TYPE.REMOVE&&this.remove(t.gameObject.id),i.label=7;case 7:return[2]}}))}))},o.prototype.add=function(t){var e=t.frames,n=t.id,o=t.component,i=new r.SpriteAnimation({frames:e});this.animates[n]=i,this.containerManager.getContainer(n).addChildAt(i.animatedSprite,0),i.animatedSprite.onComplete=function(){o.emit("complete")},i.animatedSprite.onFrameChange=function(){o.emit("frameChange")},i.animatedSprite.onLoop=function(){o.emit("loop")},o.animate=this.animates[n],this.animates[n].speed=1e3/60/o.speed,this.autoPlay[n]&&i.animatedSprite.play()},o.prototype.change=function(t){var e=t.frames,n=t.id,r=t.component;this.remove(n,!0),this.add({frames:e,id:n,component:r})},o.prototype.remove=function(t,e){var n=this.animates[t];this.autoPlay[t]=n.animatedSprite.playing,this.containerManager.getContainer(t).removeChild(n.animatedSprite),n.animatedSprite.destroy({children:!0}),delete this.animates[t],e||delete this.autoPlay[t]},o.systemName="SpriteAnimation",o=s([e.decorators.componentObserver({SpriteAnimation:["speed","resource"]})],o)}(n.Renderer);return t.SpriteAnimation=h,t.SpriteAnimationSystem=y,Object.defineProperty(t,"__esModule",{value:!0}),t}({},EVA,EVA.plugin.renderer,EVA.rendererAdapter,PIXI);
1
+ function _extends(){return(_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var _EVA_IIFE_spriteAnimation=function(e,t,n,r,o){"use strict";var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function a(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function s(e,t,n,r){var o,i=arguments.length,a=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function c(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))}function p(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function u(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function l(e,t){return e.constructor.IDEProps||(e.constructor.IDEProps={}),e.constructor.IDEProps[t]||(e.constructor.IDEProps[t]={}),e.constructor.IDEProps[t]}function m(e){return function(t,n){var r=l(t,n);r.key=n,r.type=e}}function f(e){return function(t,n){l(t,n).step=e}}var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.resource="",t.autoPlay=!0,t.speed=100,t.forwards=!1,t.waitPlay=!1,t.waitStop=!1,t.times=1/0,t.count=0,t.complete=!1,t}return a(t,e),t.prototype.init=function(e){var t=this;e&&_extends(this,e),this.on("loop",(function(){++t.count>=t.times&&(t.forwards?t.gotoAndStop(t.totalFrames-1):t.animate.stop(),t.complete=!0,t.emit("complete"))}))},t.prototype.play=function(e){void 0===e&&(e=1/0),0!==e&&(this.times=e,this.animate?(this.complete&&this.gotoAndStop(0),this.animate.play(),this.count=0,this.complete=!1):this.waitPlay=!0)},t.prototype.stop=function(){this.animate?this.animate.stop():this.waitStop=!0},Object.defineProperty(t.prototype,"animate",{get:function(){return this._animate},set:function(e){this._animate=e,this.waitPlay&&(this.waitPlay=!1,this.play(this.times)),this.waitStop&&(this.waitStop=!1,this.stop())},enumerable:!1,configurable:!0}),t.prototype.gotoAndPlay=function(e){this.animate.gotoAndPlay(e)},t.prototype.gotoAndStop=function(e){this.animate.gotoAndStop(e)},Object.defineProperty(t.prototype,"currentFrame",{get:function(){var e,t;return null===(t=null===(e=this.animate)||void 0===e?void 0:e.animatedSprite)||void 0===t?void 0:t.currentFrame},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"totalFrames",{get:function(){var e,t;return null===(t=null===(e=this.animate)||void 0===e?void 0:e.animatedSprite)||void 0===t?void 0:t.totalFrames},enumerable:!1,configurable:!0}),t.componentName="SpriteAnimation",s([m("string")],t.prototype,"resource",void 0),s([m("boolean")],t.prototype,"autoPlay",void 0),s([m("number"),f(10)],t.prototype,"speed",void 0),s([m("boolean")],t.prototype,"forwards",void 0),t}(t.Component),h="_s|r|c_";t.resource.registerInstance(t.RESOURCE_TYPE.SPRITE_ANIMATION,(function(e){var t=e.name,n=e.data;return new Promise((function(e){var r,i,a=n.json,s=o.BaseTexture.from(n.image),c=a.frames||{},p=a.animations||{},l={};for(var m in c){l[t+h+m]=c[m]}for(var m in p){var f=[];if(p[m]&&p[m].length>=0)try{for(var d=(r=void 0,u(p[m])),y=d.next();!y.done;y=d.next()){var v=y.value,g=t+h+v;f.push(g)}}catch(e){r={error:e}}finally{try{y&&!y.done&&(i=d.return)&&i.call(d)}finally{if(r)throw r.error}}p[m]=f}a.frames=l;var b=new o.Spritesheet(s,a);b.parse((function(){var t=b.textures,n=[];for(var r in t)n.push(t[r]);e(n)}))}))})),t.resource.registerDestroy(t.RESOURCE_TYPE.SPRITE_ANIMATION,(function(e){var t,n,r=e.instance;if(r)try{for(var o=u(r),i=o.next();!i.done;i=o.next()){i.value.destroy(!0)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}}));var y=function(e){function o(){var t=null!==e&&e.apply(this,arguments)||this;return t.name="SpriteAnimation",t.animates={},t.autoPlay={},t}return a(o,e),o.prototype.init=function(){this.renderSystem=this.game.getSystem(n.RendererSystem),this.renderSystem.rendererManager.register(this)},o.prototype.rendererUpdate=function(e){var t=e.transform.size,n=t.width,r=t.height;this.animates[e.id]&&(this.animates[e.id].animatedSprite.width=n,this.animates[e.id].animatedSprite.height=r)},o.prototype.componentChanged=function(e){return c(this,void 0,void 0,(function(){var n,r,o;return p(this,(function(i){switch(i.label){case 0:return"SpriteAnimation"!==e.componentName?[3,7]:(n=e.component,this.autoPlay[e.gameObject.id]=n.autoPlay,e.type!==t.OBSERVER_TYPE.ADD?[3,2]:[4,t.resource.getResource(n.resource)]);case 1:return(r=i.sent().instance)||console.error("GameObject:"+e.gameObject.name+"'s Img resource load error"),this.add({frames:r,id:e.gameObject.id,component:n}),[3,7];case 2:return e.type!==t.OBSERVER_TYPE.CHANGE?[3,6]:e.prop&&"speed"===e.prop.prop[0]?(this.animates[e.gameObject.id].speed=1e3/60/n.speed,[3,5]):[3,3];case 3:return[4,t.resource.getResource(n.resource)];case 4:(o=i.sent().instance)||console.error("GameObject:"+e.gameObject.name+"'s Img resource load error"),this.change({frames:o,id:e.gameObject.id,component:n}),i.label=5;case 5:return[3,7];case 6:e.type===t.OBSERVER_TYPE.REMOVE&&this.remove(e.gameObject.id),i.label=7;case 7:return[2]}}))}))},o.prototype.add=function(e){var t=e.frames,n=e.id,o=e.component,i=new r.SpriteAnimation({frames:t});this.animates[n]=i,this.containerManager.getContainer(n).addChildAt(i.animatedSprite,0),i.animatedSprite.onComplete=function(){o.emit("complete")},i.animatedSprite.onFrameChange=function(){o.emit("frameChange")},i.animatedSprite.onLoop=function(){o.emit("loop")},o.animate=this.animates[n],this.animates[n].speed=1e3/60/o.speed,this.autoPlay[n]&&i.animatedSprite.play()},o.prototype.change=function(e){var t=e.frames,n=e.id,r=e.component;this.remove(n,!0),this.add({frames:t,id:n,component:r})},o.prototype.remove=function(e,t){var n=this.animates[e];this.autoPlay[e]=n.animatedSprite.playing,this.containerManager.getContainer(e).removeChild(n.animatedSprite),n.animatedSprite.destroy({children:!0}),delete this.animates[e],t||delete this.autoPlay[e]},o.systemName="SpriteAnimation",o=s([t.decorators.componentObserver({SpriteAnimation:["speed","resource"]})],o)}(n.Renderer);return e.SpriteAnimation=d,e.SpriteAnimationSystem=y,Object.defineProperty(e,"__esModule",{value:!0}),e}({},EVA,EVA.plugin.renderer,EVA.rendererAdapter,PIXI);
@@ -0,0 +1,380 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import { __extends, __decorate, __values, __awaiter, __generator } from 'tslib';
4
+ import { Component, resource, RESOURCE_TYPE, OBSERVER_TYPE, decorators } from '@eva/eva.js/dist/miniprogram';
5
+ import { type, step } from '@eva/inspector-decorator';
6
+ import { RendererSystem, Renderer } from '@eva/plugin-renderer/dist/miniprogram';
7
+ import { SpriteAnimation as SpriteAnimation$4 } from '@eva/renderer-adapter/dist/miniprogram';
8
+ import { BaseTexture, Spritesheet } from '@eva/miniprogram-pixi';
9
+
10
+ var SpriteAnimation$2 = function (_super) {
11
+ __extends(SpriteAnimation, _super);
12
+
13
+ function SpriteAnimation() {
14
+ var _this = _super !== null && _super.apply(this, arguments) || this;
15
+
16
+ _this.resource = '';
17
+ _this.autoPlay = true;
18
+ _this.speed = 100;
19
+ _this.forwards = false;
20
+ _this.waitPlay = false;
21
+ _this.waitStop = false;
22
+ _this.times = Infinity;
23
+ _this.count = 0;
24
+ _this.complete = false;
25
+ return _this;
26
+ }
27
+
28
+ SpriteAnimation.prototype.init = function (obj) {
29
+ var _this = this;
30
+
31
+ obj && _extends(this, obj);
32
+ this.on('loop', function () {
33
+ if (++_this.count >= _this.times) {
34
+ if (_this.forwards) {
35
+ _this.gotoAndStop(_this.totalFrames - 1);
36
+ } else {
37
+ _this.animate.stop();
38
+ }
39
+
40
+ _this.complete = true;
41
+
42
+ _this.emit('complete');
43
+ }
44
+ });
45
+ };
46
+
47
+ SpriteAnimation.prototype.play = function (times) {
48
+ if (times === void 0) {
49
+ times = Infinity;
50
+ }
51
+
52
+ if (times === 0) {
53
+ return;
54
+ }
55
+
56
+ this.times = times;
57
+
58
+ if (!this.animate) {
59
+ this.waitPlay = true;
60
+ } else {
61
+ if (this.complete) {
62
+ this.gotoAndStop(0);
63
+ }
64
+
65
+ this.animate.play();
66
+ this.count = 0;
67
+ this.complete = false;
68
+ }
69
+ };
70
+
71
+ SpriteAnimation.prototype.stop = function () {
72
+ if (!this.animate) {
73
+ this.waitStop = true;
74
+ } else {
75
+ this.animate.stop();
76
+ }
77
+ };
78
+
79
+ Object.defineProperty(SpriteAnimation.prototype, "animate", {
80
+ get: function get() {
81
+ return this._animate;
82
+ },
83
+ set: function set(val) {
84
+ this._animate = val;
85
+
86
+ if (this.waitPlay) {
87
+ this.waitPlay = false;
88
+ this.play(this.times);
89
+ }
90
+
91
+ if (this.waitStop) {
92
+ this.waitStop = false;
93
+ this.stop();
94
+ }
95
+ },
96
+ enumerable: false,
97
+ configurable: true
98
+ });
99
+
100
+ SpriteAnimation.prototype.gotoAndPlay = function (frameNumber) {
101
+ this.animate.gotoAndPlay(frameNumber);
102
+ };
103
+
104
+ SpriteAnimation.prototype.gotoAndStop = function (frameNumber) {
105
+ this.animate.gotoAndStop(frameNumber);
106
+ };
107
+
108
+ Object.defineProperty(SpriteAnimation.prototype, "currentFrame", {
109
+ get: function get() {
110
+ var _a, _b;
111
+
112
+ return (_b = (_a = this.animate) === null || _a === void 0 ? void 0 : _a.animatedSprite) === null || _b === void 0 ? void 0 : _b.currentFrame;
113
+ },
114
+ enumerable: false,
115
+ configurable: true
116
+ });
117
+ Object.defineProperty(SpriteAnimation.prototype, "totalFrames", {
118
+ get: function get() {
119
+ var _a, _b;
120
+
121
+ return (_b = (_a = this.animate) === null || _a === void 0 ? void 0 : _a.animatedSprite) === null || _b === void 0 ? void 0 : _b.totalFrames;
122
+ },
123
+ enumerable: false,
124
+ configurable: true
125
+ });
126
+ SpriteAnimation.componentName = 'SpriteAnimation';
127
+
128
+ __decorate([type('string')], SpriteAnimation.prototype, "resource", void 0);
129
+
130
+ __decorate([type('boolean')], SpriteAnimation.prototype, "autoPlay", void 0);
131
+
132
+ __decorate([type('number'), step(10)], SpriteAnimation.prototype, "speed", void 0);
133
+
134
+ __decorate([type('boolean')], SpriteAnimation.prototype, "forwards", void 0);
135
+
136
+ return SpriteAnimation;
137
+ }(Component);
138
+
139
+ var SpriteAnimation$3 = SpriteAnimation$2;
140
+ var resourceKeySplit = '_s|r|c_';
141
+ resource.registerInstance(RESOURCE_TYPE.SPRITE_ANIMATION, function (_a) {
142
+ var name = _a.name,
143
+ data = _a.data;
144
+ return new Promise(function (r) {
145
+ var e_1, _a;
146
+
147
+ var textureObj = data.json;
148
+ var texture = BaseTexture.from(data.image);
149
+ var frames = textureObj.frames || {};
150
+ var animations = textureObj.animations || {};
151
+ var newFrames = {};
152
+
153
+ for (var key in frames) {
154
+ var newKey = name + resourceKeySplit + key;
155
+ newFrames[newKey] = frames[key];
156
+ }
157
+
158
+ for (var key in animations) {
159
+ var spriteList = [];
160
+
161
+ if (animations[key] && animations[key].length >= 0) {
162
+ try {
163
+ for (var _b = (e_1 = void 0, __values(animations[key])), _c = _b.next(); !_c.done; _c = _b.next()) {
164
+ var spriteName = _c.value;
165
+ var newSpriteName = name + resourceKeySplit + spriteName;
166
+ spriteList.push(newSpriteName);
167
+ }
168
+ } catch (e_1_1) {
169
+ e_1 = {
170
+ error: e_1_1
171
+ };
172
+ } finally {
173
+ try {
174
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
175
+ } finally {
176
+ if (e_1) throw e_1.error;
177
+ }
178
+ }
179
+ }
180
+
181
+ animations[key] = spriteList;
182
+ }
183
+
184
+ textureObj.frames = newFrames;
185
+ var spriteSheet = new Spritesheet(texture, textureObj);
186
+ spriteSheet.parse(function () {
187
+ var textures = spriteSheet.textures;
188
+ var spriteFrames = [];
189
+
190
+ for (var key in textures) {
191
+ spriteFrames.push(textures[key]);
192
+ }
193
+
194
+ r(spriteFrames);
195
+ });
196
+ });
197
+ });
198
+ resource.registerDestroy(RESOURCE_TYPE.SPRITE_ANIMATION, function (_a) {
199
+ var e_2, _b;
200
+
201
+ var instance = _a.instance;
202
+ if (!instance) return;
203
+
204
+ try {
205
+ for (var instance_1 = __values(instance), instance_1_1 = instance_1.next(); !instance_1_1.done; instance_1_1 = instance_1.next()) {
206
+ var texture = instance_1_1.value;
207
+ texture.destroy(true);
208
+ }
209
+ } catch (e_2_1) {
210
+ e_2 = {
211
+ error: e_2_1
212
+ };
213
+ } finally {
214
+ try {
215
+ if (instance_1_1 && !instance_1_1.done && (_b = instance_1.return)) _b.call(instance_1);
216
+ } finally {
217
+ if (e_2) throw e_2.error;
218
+ }
219
+ }
220
+ });
221
+
222
+ var SpriteAnimation = function (_super) {
223
+ __extends(SpriteAnimation, _super);
224
+
225
+ function SpriteAnimation() {
226
+ var _this = _super !== null && _super.apply(this, arguments) || this;
227
+
228
+ _this.name = 'SpriteAnimation';
229
+ _this.animates = {};
230
+ _this.autoPlay = {};
231
+ return _this;
232
+ }
233
+
234
+ SpriteAnimation.prototype.init = function () {
235
+ this.renderSystem = this.game.getSystem(RendererSystem);
236
+ this.renderSystem.rendererManager.register(this);
237
+ };
238
+
239
+ SpriteAnimation.prototype.rendererUpdate = function (gameObject) {
240
+ var _a = gameObject.transform.size,
241
+ width = _a.width,
242
+ height = _a.height;
243
+
244
+ if (this.animates[gameObject.id]) {
245
+ this.animates[gameObject.id].animatedSprite.width = width;
246
+ this.animates[gameObject.id].animatedSprite.height = height;
247
+ }
248
+ };
249
+
250
+ SpriteAnimation.prototype.componentChanged = function (changed) {
251
+ return __awaiter(this, void 0, void 0, function () {
252
+ var component, frames_1, frames_2;
253
+ return __generator(this, function (_a) {
254
+ switch (_a.label) {
255
+ case 0:
256
+ if (!(changed.componentName === 'SpriteAnimation')) return [3, 7];
257
+ component = changed.component;
258
+ this.autoPlay[changed.gameObject.id] = component.autoPlay;
259
+ if (!(changed.type === OBSERVER_TYPE.ADD)) return [3, 2];
260
+ return [4, resource.getResource(component.resource)];
261
+
262
+ case 1:
263
+ frames_1 = _a.sent().instance;
264
+
265
+ if (!frames_1) {
266
+ console.error("GameObject:" + changed.gameObject.name + "'s Img resource load error");
267
+ }
268
+
269
+ this.add({
270
+ frames: frames_1,
271
+ id: changed.gameObject.id,
272
+ component: component
273
+ });
274
+ return [3, 7];
275
+
276
+ case 2:
277
+ if (!(changed.type === OBSERVER_TYPE.CHANGE)) return [3, 6];
278
+ if (!(changed.prop && changed.prop.prop[0] === 'speed')) return [3, 3];
279
+ this.animates[changed.gameObject.id].speed = 1000 / 60 / component.speed;
280
+ return [3, 5];
281
+
282
+ case 3:
283
+ return [4, resource.getResource(component.resource)];
284
+
285
+ case 4:
286
+ frames_2 = _a.sent().instance;
287
+
288
+ if (!frames_2) {
289
+ console.error("GameObject:" + changed.gameObject.name + "'s Img resource load error");
290
+ }
291
+
292
+ this.change({
293
+ frames: frames_2,
294
+ id: changed.gameObject.id,
295
+ component: component
296
+ });
297
+ _a.label = 5;
298
+
299
+ case 5:
300
+ return [3, 7];
301
+
302
+ case 6:
303
+ if (changed.type === OBSERVER_TYPE.REMOVE) {
304
+ this.remove(changed.gameObject.id);
305
+ }
306
+
307
+ _a.label = 7;
308
+
309
+ case 7:
310
+ return [2];
311
+ }
312
+ });
313
+ });
314
+ };
315
+
316
+ SpriteAnimation.prototype.add = function (_a) {
317
+ var frames = _a.frames,
318
+ id = _a.id,
319
+ component = _a.component;
320
+ var animate = new SpriteAnimation$4({
321
+ frames: frames
322
+ });
323
+ this.animates[id] = animate;
324
+ this.containerManager.getContainer(id).addChildAt(animate.animatedSprite, 0);
325
+
326
+ animate.animatedSprite.onComplete = function () {
327
+ component.emit('complete');
328
+ };
329
+
330
+ animate.animatedSprite.onFrameChange = function () {
331
+ component.emit('frameChange');
332
+ };
333
+
334
+ animate.animatedSprite.onLoop = function () {
335
+ component.emit('loop');
336
+ };
337
+
338
+ component.animate = this.animates[id];
339
+ this.animates[id].speed = 1000 / 60 / component.speed;
340
+
341
+ if (this.autoPlay[id]) {
342
+ animate.animatedSprite.play();
343
+ }
344
+ };
345
+
346
+ SpriteAnimation.prototype.change = function (_a) {
347
+ var frames = _a.frames,
348
+ id = _a.id,
349
+ component = _a.component;
350
+ this.remove(id, true);
351
+ this.add({
352
+ frames: frames,
353
+ id: id,
354
+ component: component
355
+ });
356
+ };
357
+
358
+ SpriteAnimation.prototype.remove = function (id, isChange) {
359
+ var animate = this.animates[id];
360
+ this.autoPlay[id] = animate.animatedSprite.playing;
361
+ this.containerManager.getContainer(id).removeChild(animate.animatedSprite);
362
+ animate.animatedSprite.destroy({
363
+ children: true
364
+ });
365
+ delete this.animates[id];
366
+
367
+ if (!isChange) {
368
+ delete this.autoPlay[id];
369
+ }
370
+ };
371
+
372
+ SpriteAnimation.systemName = 'SpriteAnimation';
373
+ SpriteAnimation = __decorate([decorators.componentObserver({
374
+ SpriteAnimation: ['speed', 'resource']
375
+ })], SpriteAnimation);
376
+ return SpriteAnimation;
377
+ }(Renderer);
378
+
379
+ var SpriteAnimation$1 = SpriteAnimation;
380
+ export { SpriteAnimation$3 as SpriteAnimation, SpriteAnimation$1 as SpriteAnimationSystem };
@@ -99,10 +99,12 @@ var SpriteAnimation$2 = (function (_super) {
99
99
  _this.resource = '';
100
100
  _this.autoPlay = true;
101
101
  _this.speed = 100;
102
+ _this.forwards = false;
102
103
  _this.waitPlay = false;
103
104
  _this.waitStop = false;
104
105
  _this.times = Infinity;
105
106
  _this.count = 0;
107
+ _this.complete = false;
106
108
  return _this;
107
109
  }
108
110
  SpriteAnimation.prototype.init = function (obj) {
@@ -110,7 +112,13 @@ var SpriteAnimation$2 = (function (_super) {
110
112
  obj && Object.assign(this, obj);
111
113
  this.on('loop', function () {
112
114
  if (++_this.count >= _this.times) {
113
- _this.animate.stop();
115
+ if (_this.forwards) {
116
+ _this.gotoAndStop(_this.totalFrames - 1);
117
+ }
118
+ else {
119
+ _this.animate.stop();
120
+ }
121
+ _this.complete = true;
114
122
  _this.emit('complete');
115
123
  }
116
124
  });
@@ -125,8 +133,12 @@ var SpriteAnimation$2 = (function (_super) {
125
133
  this.waitPlay = true;
126
134
  }
127
135
  else {
136
+ if (this.complete) {
137
+ this.gotoAndStop(0);
138
+ }
128
139
  this.animate.play();
129
140
  this.count = 0;
141
+ this.complete = false;
130
142
  }
131
143
  };
132
144
  SpriteAnimation.prototype.stop = function () {
@@ -161,6 +173,22 @@ var SpriteAnimation$2 = (function (_super) {
161
173
  SpriteAnimation.prototype.gotoAndStop = function (frameNumber) {
162
174
  this.animate.gotoAndStop(frameNumber);
163
175
  };
176
+ Object.defineProperty(SpriteAnimation.prototype, "currentFrame", {
177
+ get: function () {
178
+ var _a, _b;
179
+ return (_b = (_a = this.animate) === null || _a === void 0 ? void 0 : _a.animatedSprite) === null || _b === void 0 ? void 0 : _b.currentFrame;
180
+ },
181
+ enumerable: false,
182
+ configurable: true
183
+ });
184
+ Object.defineProperty(SpriteAnimation.prototype, "totalFrames", {
185
+ get: function () {
186
+ var _a, _b;
187
+ return (_b = (_a = this.animate) === null || _a === void 0 ? void 0 : _a.animatedSprite) === null || _b === void 0 ? void 0 : _b.totalFrames;
188
+ },
189
+ enumerable: false,
190
+ configurable: true
191
+ });
164
192
  SpriteAnimation.componentName = 'SpriteAnimation';
165
193
  __decorate([
166
194
  inspectorDecorator.type('string')
@@ -172,6 +200,9 @@ var SpriteAnimation$2 = (function (_super) {
172
200
  inspectorDecorator.type('number'),
173
201
  inspectorDecorator.step(10)
174
202
  ], SpriteAnimation.prototype, "speed", void 0);
203
+ __decorate([
204
+ inspectorDecorator.type('boolean')
205
+ ], SpriteAnimation.prototype, "forwards", void 0);
175
206
  return SpriteAnimation;
176
207
  }(eva_js.Component));
177
208
  var SpriteAnimation$3 = SpriteAnimation$2;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@eva/eva.js"),t=require("@eva/inspector-decorator"),n=require("@eva/plugin-renderer"),r=require("@eva/renderer-adapter"),o=require("pixi.js"),i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function a(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function s(e,t,n,r){var o,i=arguments.length,a=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function c(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function p(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}var u=function(e){function n(){var t=null!==e&&e.apply(this,arguments)||this;return t.resource="",t.autoPlay=!0,t.speed=100,t.waitPlay=!1,t.waitStop=!1,t.times=1/0,t.count=0,t}return a(n,e),n.prototype.init=function(e){var t=this;e&&Object.assign(this,e),this.on("loop",(function(){++t.count>=t.times&&(t.animate.stop(),t.emit("complete"))}))},n.prototype.play=function(e){void 0===e&&(e=1/0),0!==e&&(this.times=e,this.animate?(this.animate.play(),this.count=0):this.waitPlay=!0)},n.prototype.stop=function(){this.animate?this.animate.stop():this.waitStop=!0},Object.defineProperty(n.prototype,"animate",{get:function(){return this._animate},set:function(e){this._animate=e,this.waitPlay&&(this.waitPlay=!1,this.play(this.times)),this.waitStop&&(this.waitStop=!1,this.stop())},enumerable:!1,configurable:!0}),n.prototype.gotoAndPlay=function(e){this.animate.gotoAndPlay(e)},n.prototype.gotoAndStop=function(e){this.animate.gotoAndStop(e)},n.componentName="SpriteAnimation",s([t.type("string")],n.prototype,"resource",void 0),s([t.type("boolean")],n.prototype,"autoPlay",void 0),s([t.type("number"),t.step(10)],n.prototype,"speed",void 0),n}(e.Component);e.resource.registerInstance(e.RESOURCE_TYPE.SPRITE_ANIMATION,(function(e){var t=e.name,n=e.data;return new Promise((function(e){var r,i,a=n.json,s=o.BaseTexture.from(n.image),c=a.frames||{},u=a.animations||{},l={};for(var m in c){l[t+"_s|r|c_"+m]=c[m]}for(var m in u){var f=[];if(u[m]&&u[m].length>=0)try{for(var h=(r=void 0,p(u[m])),d=h.next();!d.done;d=h.next()){var y=d.value,v=t+"_s|r|c_"+y;f.push(v)}}catch(e){r={error:e}}finally{try{d&&!d.done&&(i=h.return)&&i.call(h)}finally{if(r)throw r.error}}u[m]=f}a.frames=l;var g=new o.Spritesheet(s,a);g.parse((function(){var t=g.textures,n=[];for(var r in t)n.push(t[r]);e(n)}))}))})),e.resource.registerDestroy(e.RESOURCE_TYPE.SPRITE_ANIMATION,(function(e){var t,n,r=e.instance;if(r)try{for(var o=p(r),i=o.next();!i.done;i=o.next()){i.value.destroy(!0)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}}));var l=function(t){function o(){var e=null!==t&&t.apply(this,arguments)||this;return e.name="SpriteAnimation",e.animates={},e.autoPlay={},e}return a(o,t),o.prototype.init=function(){this.renderSystem=this.game.getSystem(n.RendererSystem),this.renderSystem.rendererManager.register(this)},o.prototype.rendererUpdate=function(e){var t=e.transform.size,n=t.width,r=t.height;this.animates[e.id]&&(this.animates[e.id].animatedSprite.width=n,this.animates[e.id].animatedSprite.height=r)},o.prototype.componentChanged=function(t){return n=this,r=void 0,i=function(){var n,r,o;return c(this,(function(i){switch(i.label){case 0:return"SpriteAnimation"!==t.componentName?[3,7]:(n=t.component,this.autoPlay[t.gameObject.id]=n.autoPlay,t.type!==e.OBSERVER_TYPE.ADD?[3,2]:[4,e.resource.getResource(n.resource)]);case 1:return(r=i.sent().instance)||console.error("GameObject:"+t.gameObject.name+"'s Img resource load error"),this.add({frames:r,id:t.gameObject.id,component:n}),[3,7];case 2:return t.type!==e.OBSERVER_TYPE.CHANGE?[3,6]:t.prop&&"speed"===t.prop.prop[0]?(this.animates[t.gameObject.id].speed=1e3/60/n.speed,[3,5]):[3,3];case 3:return[4,e.resource.getResource(n.resource)];case 4:(o=i.sent().instance)||console.error("GameObject:"+t.gameObject.name+"'s Img resource load error"),this.change({frames:o,id:t.gameObject.id,component:n}),i.label=5;case 5:return[3,7];case 6:t.type===e.OBSERVER_TYPE.REMOVE&&this.remove(t.gameObject.id),i.label=7;case 7:return[2]}}))},new((o=void 0)||(o=Promise))((function(e,t){function a(e){try{c(i.next(e))}catch(e){t(e)}}function s(e){try{c(i.throw(e))}catch(e){t(e)}}function c(t){t.done?e(t.value):new o((function(e){e(t.value)})).then(a,s)}c((i=i.apply(n,r||[])).next())}));var n,r,o,i},o.prototype.add=function(e){var t=e.frames,n=e.id,o=e.component,i=new r.SpriteAnimation({frames:t});this.animates[n]=i,this.containerManager.getContainer(n).addChildAt(i.animatedSprite,0),i.animatedSprite.onComplete=function(){o.emit("complete")},i.animatedSprite.onFrameChange=function(){o.emit("frameChange")},i.animatedSprite.onLoop=function(){o.emit("loop")},o.animate=this.animates[n],this.animates[n].speed=1e3/60/o.speed,this.autoPlay[n]&&i.animatedSprite.play()},o.prototype.change=function(e){var t=e.frames,n=e.id,r=e.component;this.remove(n,!0),this.add({frames:t,id:n,component:r})},o.prototype.remove=function(e,t){var n=this.animates[e];this.autoPlay[e]=n.animatedSprite.playing,this.containerManager.getContainer(e).removeChild(n.animatedSprite),n.animatedSprite.destroy({children:!0}),delete this.animates[e],t||delete this.autoPlay[e]},o.systemName="SpriteAnimation",o=s([e.decorators.componentObserver({SpriteAnimation:["speed","resource"]})],o)}(n.Renderer);exports.SpriteAnimation=u,exports.SpriteAnimationSystem=l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@eva/eva.js"),t=require("@eva/inspector-decorator"),r=require("@eva/plugin-renderer"),n=require("@eva/renderer-adapter"),o=require("pixi.js"),i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function a(e,t){function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function s(e,t,r,n){var o,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function c(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function p(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}var u=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.resource="",t.autoPlay=!0,t.speed=100,t.forwards=!1,t.waitPlay=!1,t.waitStop=!1,t.times=1/0,t.count=0,t.complete=!1,t}return a(r,e),r.prototype.init=function(e){var t=this;e&&Object.assign(this,e),this.on("loop",(function(){++t.count>=t.times&&(t.forwards?t.gotoAndStop(t.totalFrames-1):t.animate.stop(),t.complete=!0,t.emit("complete"))}))},r.prototype.play=function(e){void 0===e&&(e=1/0),0!==e&&(this.times=e,this.animate?(this.complete&&this.gotoAndStop(0),this.animate.play(),this.count=0,this.complete=!1):this.waitPlay=!0)},r.prototype.stop=function(){this.animate?this.animate.stop():this.waitStop=!0},Object.defineProperty(r.prototype,"animate",{get:function(){return this._animate},set:function(e){this._animate=e,this.waitPlay&&(this.waitPlay=!1,this.play(this.times)),this.waitStop&&(this.waitStop=!1,this.stop())},enumerable:!1,configurable:!0}),r.prototype.gotoAndPlay=function(e){this.animate.gotoAndPlay(e)},r.prototype.gotoAndStop=function(e){this.animate.gotoAndStop(e)},Object.defineProperty(r.prototype,"currentFrame",{get:function(){var e,t;return null===(t=null===(e=this.animate)||void 0===e?void 0:e.animatedSprite)||void 0===t?void 0:t.currentFrame},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"totalFrames",{get:function(){var e,t;return null===(t=null===(e=this.animate)||void 0===e?void 0:e.animatedSprite)||void 0===t?void 0:t.totalFrames},enumerable:!1,configurable:!0}),r.componentName="SpriteAnimation",s([t.type("string")],r.prototype,"resource",void 0),s([t.type("boolean")],r.prototype,"autoPlay",void 0),s([t.type("number"),t.step(10)],r.prototype,"speed",void 0),s([t.type("boolean")],r.prototype,"forwards",void 0),r}(e.Component);e.resource.registerInstance(e.RESOURCE_TYPE.SPRITE_ANIMATION,(function(e){var t=e.name,r=e.data;return new Promise((function(e){var n,i,a=r.json,s=o.BaseTexture.from(r.image),c=a.frames||{},u=a.animations||{},l={};for(var m in c){l[t+"_s|r|c_"+m]=c[m]}for(var m in u){var d=[];if(u[m]&&u[m].length>=0)try{for(var f=(n=void 0,p(u[m])),h=f.next();!h.done;h=f.next()){var y=h.value,v=t+"_s|r|c_"+y;d.push(v)}}catch(e){n={error:e}}finally{try{h&&!h.done&&(i=f.return)&&i.call(f)}finally{if(n)throw n.error}}u[m]=d}a.frames=l;var g=new o.Spritesheet(s,a);g.parse((function(){var t=g.textures,r=[];for(var n in t)r.push(t[n]);e(r)}))}))})),e.resource.registerDestroy(e.RESOURCE_TYPE.SPRITE_ANIMATION,(function(e){var t,r,n=e.instance;if(n)try{for(var o=p(n),i=o.next();!i.done;i=o.next()){i.value.destroy(!0)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}}));var l=function(t){function o(){var e=null!==t&&t.apply(this,arguments)||this;return e.name="SpriteAnimation",e.animates={},e.autoPlay={},e}return a(o,t),o.prototype.init=function(){this.renderSystem=this.game.getSystem(r.RendererSystem),this.renderSystem.rendererManager.register(this)},o.prototype.rendererUpdate=function(e){var t=e.transform.size,r=t.width,n=t.height;this.animates[e.id]&&(this.animates[e.id].animatedSprite.width=r,this.animates[e.id].animatedSprite.height=n)},o.prototype.componentChanged=function(t){return r=this,n=void 0,i=function(){var r,n,o;return c(this,(function(i){switch(i.label){case 0:return"SpriteAnimation"!==t.componentName?[3,7]:(r=t.component,this.autoPlay[t.gameObject.id]=r.autoPlay,t.type!==e.OBSERVER_TYPE.ADD?[3,2]:[4,e.resource.getResource(r.resource)]);case 1:return(n=i.sent().instance)||console.error("GameObject:"+t.gameObject.name+"'s Img resource load error"),this.add({frames:n,id:t.gameObject.id,component:r}),[3,7];case 2:return t.type!==e.OBSERVER_TYPE.CHANGE?[3,6]:t.prop&&"speed"===t.prop.prop[0]?(this.animates[t.gameObject.id].speed=1e3/60/r.speed,[3,5]):[3,3];case 3:return[4,e.resource.getResource(r.resource)];case 4:(o=i.sent().instance)||console.error("GameObject:"+t.gameObject.name+"'s Img resource load error"),this.change({frames:o,id:t.gameObject.id,component:r}),i.label=5;case 5:return[3,7];case 6:t.type===e.OBSERVER_TYPE.REMOVE&&this.remove(t.gameObject.id),i.label=7;case 7:return[2]}}))},new((o=void 0)||(o=Promise))((function(e,t){function a(e){try{c(i.next(e))}catch(e){t(e)}}function s(e){try{c(i.throw(e))}catch(e){t(e)}}function c(t){t.done?e(t.value):new o((function(e){e(t.value)})).then(a,s)}c((i=i.apply(r,n||[])).next())}));var r,n,o,i},o.prototype.add=function(e){var t=e.frames,r=e.id,o=e.component,i=new n.SpriteAnimation({frames:t});this.animates[r]=i,this.containerManager.getContainer(r).addChildAt(i.animatedSprite,0),i.animatedSprite.onComplete=function(){o.emit("complete")},i.animatedSprite.onFrameChange=function(){o.emit("frameChange")},i.animatedSprite.onLoop=function(){o.emit("loop")},o.animate=this.animates[r],this.animates[r].speed=1e3/60/o.speed,this.autoPlay[r]&&i.animatedSprite.play()},o.prototype.change=function(e){var t=e.frames,r=e.id,n=e.component;this.remove(r,!0),this.add({frames:t,id:r,component:n})},o.prototype.remove=function(e,t){var r=this.animates[e];this.autoPlay[e]=r.animatedSprite.playing,this.containerManager.getContainer(e).removeChild(r.animatedSprite),r.animatedSprite.destroy({children:!0}),delete this.animates[e],t||delete this.autoPlay[e]},o.systemName="SpriteAnimation",o=s([e.decorators.componentObserver({SpriteAnimation:["speed","resource"]})],o)}(r.Renderer);exports.SpriteAnimation=u,exports.SpriteAnimationSystem=l;
@@ -12,11 +12,13 @@ export declare class SpriteAnimation extends Component<SpriteAnimationParams> {
12
12
  resource: string;
13
13
  autoPlay: boolean;
14
14
  speed: number;
15
+ forwards: boolean;
15
16
  _animate: SpriteAnimation_2;
16
17
  private waitPlay;
17
18
  private waitStop;
18
19
  private times;
19
20
  private count;
21
+ private complete;
20
22
  init(obj?: SpriteAnimationParams): void;
21
23
  play(times?: number): void;
22
24
  stop(): void;
@@ -24,12 +26,15 @@ export declare class SpriteAnimation extends Component<SpriteAnimationParams> {
24
26
  get animate(): SpriteAnimation_2;
25
27
  gotoAndPlay(frameNumber: any): void;
26
28
  gotoAndStop(frameNumber: any): void;
29
+ get currentFrame(): number;
30
+ get totalFrames(): number;
27
31
  }
28
32
 
29
33
  export declare interface SpriteAnimationParams {
30
34
  resource: string;
31
- autoPlay: boolean;
32
- speed: number;
35
+ autoPlay?: boolean;
36
+ speed?: number;
37
+ forwards?: boolean;
33
38
  }
34
39
 
35
40
  export declare class SpriteAnimationSystem extends Renderer {
@@ -95,10 +95,12 @@ var SpriteAnimation$2 = (function (_super) {
95
95
  _this.resource = '';
96
96
  _this.autoPlay = true;
97
97
  _this.speed = 100;
98
+ _this.forwards = false;
98
99
  _this.waitPlay = false;
99
100
  _this.waitStop = false;
100
101
  _this.times = Infinity;
101
102
  _this.count = 0;
103
+ _this.complete = false;
102
104
  return _this;
103
105
  }
104
106
  SpriteAnimation.prototype.init = function (obj) {
@@ -106,7 +108,13 @@ var SpriteAnimation$2 = (function (_super) {
106
108
  obj && Object.assign(this, obj);
107
109
  this.on('loop', function () {
108
110
  if (++_this.count >= _this.times) {
109
- _this.animate.stop();
111
+ if (_this.forwards) {
112
+ _this.gotoAndStop(_this.totalFrames - 1);
113
+ }
114
+ else {
115
+ _this.animate.stop();
116
+ }
117
+ _this.complete = true;
110
118
  _this.emit('complete');
111
119
  }
112
120
  });
@@ -121,8 +129,12 @@ var SpriteAnimation$2 = (function (_super) {
121
129
  this.waitPlay = true;
122
130
  }
123
131
  else {
132
+ if (this.complete) {
133
+ this.gotoAndStop(0);
134
+ }
124
135
  this.animate.play();
125
136
  this.count = 0;
137
+ this.complete = false;
126
138
  }
127
139
  };
128
140
  SpriteAnimation.prototype.stop = function () {
@@ -157,6 +169,22 @@ var SpriteAnimation$2 = (function (_super) {
157
169
  SpriteAnimation.prototype.gotoAndStop = function (frameNumber) {
158
170
  this.animate.gotoAndStop(frameNumber);
159
171
  };
172
+ Object.defineProperty(SpriteAnimation.prototype, "currentFrame", {
173
+ get: function () {
174
+ var _a, _b;
175
+ return (_b = (_a = this.animate) === null || _a === void 0 ? void 0 : _a.animatedSprite) === null || _b === void 0 ? void 0 : _b.currentFrame;
176
+ },
177
+ enumerable: false,
178
+ configurable: true
179
+ });
180
+ Object.defineProperty(SpriteAnimation.prototype, "totalFrames", {
181
+ get: function () {
182
+ var _a, _b;
183
+ return (_b = (_a = this.animate) === null || _a === void 0 ? void 0 : _a.animatedSprite) === null || _b === void 0 ? void 0 : _b.totalFrames;
184
+ },
185
+ enumerable: false,
186
+ configurable: true
187
+ });
160
188
  SpriteAnimation.componentName = 'SpriteAnimation';
161
189
  __decorate([
162
190
  type('string')
@@ -168,6 +196,9 @@ var SpriteAnimation$2 = (function (_super) {
168
196
  type('number'),
169
197
  step(10)
170
198
  ], SpriteAnimation.prototype, "speed", void 0);
199
+ __decorate([
200
+ type('boolean')
201
+ ], SpriteAnimation.prototype, "forwards", void 0);
171
202
  return SpriteAnimation;
172
203
  }(Component));
173
204
  var SpriteAnimation$3 = SpriteAnimation$2;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eva/plugin-renderer-sprite-animation",
3
- "version": "1.2.2-alpha.1",
3
+ "version": "1.2.2-alpha.5",
4
4
  "description": "@eva/plugin-renderer-sprite-animation",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer-sprite-animation.esm.js",
@@ -19,9 +19,9 @@
19
19
  "homepage": "https://eva.js.org",
20
20
  "dependencies": {
21
21
  "@eva/inspector-decorator": "^0.0.5",
22
- "@eva/plugin-renderer": "1.2.2-alpha.1",
23
- "@eva/renderer-adapter": "1.2.2-alpha.1",
24
- "@eva/eva.js": "1.2.2-alpha.1",
22
+ "@eva/plugin-renderer": "1.2.2-alpha.5",
23
+ "@eva/renderer-adapter": "1.2.2-alpha.5",
24
+ "@eva/eva.js": "1.2.2-alpha.5",
25
25
  "pixi.js": "^4.8.7"
26
26
  }
27
27
  }