diff --git a/src/loaders/spritesheetParser.js b/src/loaders/spritesheetParser.js index 12c2174..4ab9ad3 100644 --- a/src/loaders/spritesheetParser.js +++ b/src/loaders/spritesheetParser.js @@ -31,6 +31,13 @@ // load the image for this sheet this.add(imageResourceName, resourcePath, loadOptions, function onImageLoad(res) { + if (res.error) + { + next(res.error); + + return; + } + const spritesheet = new Spritesheet( res.texture.baseTexture, resource.data, diff --git a/src/loaders/spritesheetParser.js b/src/loaders/spritesheetParser.js index 12c2174..4ab9ad3 100644 --- a/src/loaders/spritesheetParser.js +++ b/src/loaders/spritesheetParser.js @@ -31,6 +31,13 @@ // load the image for this sheet this.add(imageResourceName, resourcePath, loadOptions, function onImageLoad(res) { + if (res.error) + { + next(res.error); + + return; + } + const spritesheet = new Spritesheet( res.texture.baseTexture, resource.data, diff --git a/test/loaders/resources/atlas_error.json b/test/loaders/resources/atlas_error.json new file mode 100644 index 0000000..531a124 --- /dev/null +++ b/test/loaders/resources/atlas_error.json @@ -0,0 +1,17 @@ +{ + "frames": { + "boss1.png": { + "frame": {"x":1,"y":1,"w":168,"h":168}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":168,"h":168}, + "sourceSize": {"w":168,"h":168} + } + }, + "meta": { + "image": "invalid.png", + "format": "RGBA8888", + "size": {"w":170,"h":170}, + "scale": "1" + } +} \ No newline at end of file diff --git a/src/loaders/spritesheetParser.js b/src/loaders/spritesheetParser.js index 12c2174..4ab9ad3 100644 --- a/src/loaders/spritesheetParser.js +++ b/src/loaders/spritesheetParser.js @@ -31,6 +31,13 @@ // load the image for this sheet this.add(imageResourceName, resourcePath, loadOptions, function onImageLoad(res) { + if (res.error) + { + next(res.error); + + return; + } + const spritesheet = new Spritesheet( res.texture.baseTexture, resource.data, diff --git a/test/loaders/resources/atlas_error.json b/test/loaders/resources/atlas_error.json new file mode 100644 index 0000000..531a124 --- /dev/null +++ b/test/loaders/resources/atlas_error.json @@ -0,0 +1,17 @@ +{ + "frames": { + "boss1.png": { + "frame": {"x":1,"y":1,"w":168,"h":168}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":168,"h":168}, + "sourceSize": {"w":168,"h":168} + } + }, + "meta": { + "image": "invalid.png", + "format": "RGBA8888", + "size": {"w":170,"h":170}, + "scale": "1" + } +} \ No newline at end of file diff --git a/test/loaders/spritesheetParser.js b/test/loaders/spritesheetParser.js index 7bac3cb..7d0d0c1 100644 --- a/test/loaders/spritesheetParser.js +++ b/test/loaders/spritesheetParser.js @@ -85,6 +85,27 @@ }); }); + it('should dispatch an error failing to load spritesheet image', function (done) + { + const spy = sinon.spy((error, ldr, res) => + { + expect(res.name).to.equal('atlas_image'); + expect(res.error).to.equal(error); + expect(error.toString()).to.have.string('Failed to load element using: IMG'); + }); + const loader = new PIXI.loaders.Loader(); + + loader.add('atlas', path.join(__dirname, 'resources', 'atlas_error.json')); + loader.onError.add(spy); + loader.load((loader, resources) => + { + expect(resources.atlas_image.error).to.be.instanceof(Error); + expect(spy.calledOnce).to.be.true; + loader.reset(); + done(); + }); + }); + it('should build the image url', function () { function getResourcePath(url, image)