DisplayObject._generateCachedSprite (which is called from updateCache or when cacheAsBitmap is enabled) would bitwise | 1 the bounds width and height. This would often lead to incorrect rounding (heights of 4 would become 5, while heights of 5 would remain 5). This has now been removed and the width and height are passed through Mail.ceil and then checked to make sure they aren't less than 1 pixel in either direction (thanks @alesdotio #2078)

This commit is contained in:
Richard Davey 2016-02-17 03:40:04 +00:00
parent b629539176
commit f6d273c4fc
2 changed files with 9 additions and 4 deletions

View file

@ -395,6 +395,7 @@ Please note that Phaser uses a custom build of Pixi and always has done. The fol
* If a Display Object with a mask contained a child with a Filter, then the child would not render. The WebGLFilterManager now retains state and creates a new stencil buffer as required (thanks @hightopo #1842) * If a Display Object with a mask contained a child with a Filter, then the child would not render. The WebGLFilterManager now retains state and creates a new stencil buffer as required (thanks @hightopo #1842)
* The Filter Texture and GL Viewport are now properly resized, fixing issues with custom resolutions and filters (thanks @englercj @amadeus #2326 #2320) * The Filter Texture and GL Viewport are now properly resized, fixing issues with custom resolutions and filters (thanks @englercj @amadeus #2326 #2320)
* Graphics.generateTexture has a new argument `padding` which allows you to add extra spacing onto the generated texture. This is useful for small Graphics objects where you find a few pixels getting sliced off the edges due to rounding issues (#1933) * Graphics.generateTexture has a new argument `padding` which allows you to add extra spacing onto the generated texture. This is useful for small Graphics objects where you find a few pixels getting sliced off the edges due to rounding issues (#1933)
* DisplayObject._generateCachedSprite (which is called from `updateCache` or when `cacheAsBitmap` is enabled) would bitwise | 1 the bounds width and height. This would often lead to incorrect rounding (heights of 4 would become 5, while heights of 5 would remain 5). This has now been removed and the width and height are passed through Mail.ceil and then checked to make sure they aren't less than 1 pixel in either direction (thanks @alesdotio #2078)
For changes in previous releases please see the extensive [Version History](https://github.com/photonstorm/phaser/blob/master/CHANGELOG.md). For changes in previous releases please see the extensive [Version History](https://github.com/photonstorm/phaser/blob/master/CHANGELOG.md).

View file

@ -641,17 +641,21 @@ PIXI.DisplayObject.prototype._generateCachedSprite = function()
var bounds = this.getLocalBounds(); var bounds = this.getLocalBounds();
// Round it off and force non-zero dimensions
bounds.width = Math.max(1, Math.ceil(bounds.width));
bounds.height = Math.max(1, Math.ceil(bounds.height));
this.updateTransform(); this.updateTransform();
if (!this._cachedSprite) if (!this._cachedSprite)
{ {
var renderTexture = new PIXI.RenderTexture(bounds.width | 1, bounds.height | 1); var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height);
this._cachedSprite = new PIXI.Sprite(renderTexture); this._cachedSprite = new PIXI.Sprite(renderTexture);
this._cachedSprite.worldTransform = this.worldTransform; this._cachedSprite.worldTransform = this.worldTransform;
} }
else else
{ {
this._cachedSprite.texture.resize(bounds.width | 1, bounds.height | 1); this._cachedSprite.texture.resize(bounds.width, bounds.height);
} }
// Remove filters // Remove filters
@ -664,8 +668,8 @@ PIXI.DisplayObject.prototype._generateCachedSprite = function()
PIXI.DisplayObject._tempMatrix.ty = -bounds.y; PIXI.DisplayObject._tempMatrix.ty = -bounds.y;
this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true);
this._cachedSprite.anchor.x = -( bounds.x / bounds.width ); this._cachedSprite.anchor.x = -(bounds.x / bounds.width);
this._cachedSprite.anchor.y = -( bounds.y / bounds.height ); this._cachedSprite.anchor.y = -(bounds.y / bounds.height);
this._filters = tempFilters; this._filters = tempFilters;