@eva/plugin-renderer-sprite-animation 1.2.1-type.2 → 1.2.2-alpha.2

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