diff --git a/packages/sprite/src/Sprite.js b/packages/sprite/src/Sprite.js index d8ccb44..53c8576 100644 --- a/packages/sprite/src/Sprite.js +++ b/packages/sprite/src/Sprite.js @@ -410,6 +410,8 @@ { super.destroy(options); + this._texture.off('update', this._onTextureUpdate, this); + this._anchor = null; const destroyTexture = typeof options === 'boolean' ? options : options && options.texture; diff --git a/packages/sprite/src/Sprite.js b/packages/sprite/src/Sprite.js index d8ccb44..53c8576 100644 --- a/packages/sprite/src/Sprite.js +++ b/packages/sprite/src/Sprite.js @@ -410,6 +410,8 @@ { super.destroy(options); + this._texture.off('update', this._onTextureUpdate, this); + this._anchor = null; const destroyTexture = typeof options === 'boolean' ? options : options && options.texture; diff --git a/packages/sprite/test/Sprite.js b/packages/sprite/test/Sprite.js index 9e9d5e7..75690ec 100755 --- a/packages/sprite/test/Sprite.js +++ b/packages/sprite/test/Sprite.js @@ -3,6 +3,8 @@ const { Container } = require('@pixi/display'); const { Point } = require('@pixi/math'); +const path = require('path'); + describe('PIXI.Sprite', function () { describe('width', function () @@ -125,4 +127,22 @@ expect(sprite.containsPoint(point)).to.be.false; }); }); + + describe('destroy', function () + { + it('should destroy while BaseTexture is loading', function () + { + const texture = Texture.from(path.resolve(__dirname, 'resources', 'building1.png')); + const sprite = new Sprite(texture); + + expect(texture._eventsCount).to.equal(1); + + sprite.destroy(); + + expect(texture._eventsCount).to.equal(0); + + texture.emit('update', texture); + texture.destroy(true); + }); + }); });