Skip to content

Commit 04c04c0

Browse files
committed
Issue cocos2d#2416: Sprite SetColor mistake
1 parent a6fcf76 commit 04c04c0

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

cocos2d/core/sprites/CCSpriteCanvasRenderCmd.js

+16-4
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,18 @@
241241

242242
proto._changeTextureColor = function () {
243243
var node = this._node;
244+
var displayedColor = this._displayedColor;
245+
246+
if(this._colorized){
247+
if(displayedColor.r === 255 && displayedColor.g === 255 && displayedColor.b === 255 && displayedColor.a === 255){
248+
this._colorized = false;
249+
node.texture = this._originalTexture;
250+
return;
251+
}
252+
}else
253+
if(displayedColor.r === 255 && displayedColor.g === 255 && displayedColor.b === 255 && displayedColor.a === 255)
254+
return;
255+
244256
var locElement, locTexture = node._texture, locRect = this._textureCoord;
245257
if (locTexture && locRect.validRect && this._originalTexture) {
246258
locElement = locTexture.getHtmlElementObj();
@@ -253,9 +265,9 @@
253265
this._colorized = true;
254266
//generate color texture cache
255267
if (locElement instanceof HTMLCanvasElement && !this._rectRotated && !this._newTextureWhenChangeColor)
256-
cc.Sprite.CanvasRenderCmd._generateTintImage(locElement, cacheTextureForColor, this._displayedColor, locRect, locElement);
268+
cc.Sprite.CanvasRenderCmd._generateTintImage(locElement, cacheTextureForColor, displayedColor, locRect, locElement);
257269
else {
258-
locElement = cc.Sprite.CanvasRenderCmd._generateTintImage(locElement, cacheTextureForColor, this._displayedColor, locRect);
270+
locElement = cc.Sprite.CanvasRenderCmd._generateTintImage(locElement, cacheTextureForColor, displayedColor, locRect);
259271
locTexture = new cc.Texture2D();
260272
locTexture.initWithElement(locElement);
261273
locTexture.handleLoadedTexture();
@@ -266,9 +278,9 @@
266278
this._colorized = true;
267279
if (locElement instanceof HTMLCanvasElement && !this._rectRotated && !this._newTextureWhenChangeColor
268280
&& this._originalTexture._htmlElementObj != locElement)
269-
cc.Sprite.CanvasRenderCmd._generateTintImageWithMultiply(this._originalTexture._htmlElementObj, this._displayedColor, locRect, locElement);
281+
cc.Sprite.CanvasRenderCmd._generateTintImageWithMultiply(this._originalTexture._htmlElementObj, displayedColor, locRect, locElement);
270282
else {
271-
locElement = cc.Sprite.CanvasRenderCmd._generateTintImageWithMultiply(this._originalTexture._htmlElementObj, this._displayedColor, locRect);
283+
locElement = cc.Sprite.CanvasRenderCmd._generateTintImageWithMultiply(this._originalTexture._htmlElementObj, displayedColor, locRect);
272284
locTexture = new cc.Texture2D();
273285
locTexture.initWithElement(locElement);
274286
locTexture.handleLoadedTexture();

0 commit comments

Comments
 (0)