diff --git a/src/core/utils/index.js b/src/core/utils/index.js index c82aaa4..2a7497b 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -103,9 +103,10 @@ * @memberof PIXI.utils * @function getResolutionOfUrl * @param {string} url - the image path + * @param {number} [defaultValue=1] - the defaultValue if no filename prefix is set. * @return {number} resolution / device pixel ratio of an asset */ -export function getResolutionOfUrl(url) +export function getResolutionOfUrl(url, defaultValue) { const resolution = settings.RETINA_PREFIX.exec(url); @@ -114,7 +115,7 @@ return parseFloat(resolution[1]); } - return 1; + return defaultValue !== undefined ? defaultValue : 1; } /** diff --git a/src/core/utils/index.js b/src/core/utils/index.js index c82aaa4..2a7497b 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -103,9 +103,10 @@ * @memberof PIXI.utils * @function getResolutionOfUrl * @param {string} url - the image path + * @param {number} [defaultValue=1] - the defaultValue if no filename prefix is set. * @return {number} resolution / device pixel ratio of an asset */ -export function getResolutionOfUrl(url) +export function getResolutionOfUrl(url, defaultValue) { const resolution = settings.RETINA_PREFIX.exec(url); @@ -114,7 +115,7 @@ return parseFloat(resolution[1]); } - return 1; + return defaultValue !== undefined ? defaultValue : 1; } /** diff --git a/src/loaders/spritesheetParser.js b/src/loaders/spritesheetParser.js index 2d637b1..2b30b1c 100644 --- a/src/loaders/spritesheetParser.js +++ b/src/loaders/spritesheetParser.js @@ -43,14 +43,22 @@ const frames = resource.data.frames; const frameKeys = Object.keys(frames); const baseTexture = res.texture.baseTexture; - let resolution = core.utils.getResolutionOfUrl(resource.url); const scale = resource.data.meta.scale; - // for now (to keep things compatible) resolution overrides scale - // Support scale field on spritesheet - if (resolution === 1 && scale !== undefined && scale !== 1) + // Use a defaultValue of `null` to check if a url-based resolution is set + let resolution = core.utils.getResolutionOfUrl(resource.url, null); + + // No resolution found via URL + if (resolution === null) { - baseTexture.resolution = resolution = scale; + // Use the scale value or default to 1 + resolution = scale !== undefined ? scale : 1; + } + + // For non-1 resolutions, update baseTexture + if (resolution !== 1) + { + baseTexture.resolution = resolution; baseTexture.update(); }