Skip to content

Commit cf4908d

Browse files
committed
Merge pull request #38 from VisualSJ/Iss2416_RefactorRenderer
Iss2416 refactor renderer
2 parents 29a8328 + 6732f99 commit cf4908d

File tree

5 files changed

+25
-14
lines changed

5 files changed

+25
-14
lines changed

cocos2d/core/sprites/CCSpriteCanvasRenderCmd.js

+21-14
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,20 @@
239239
cc.g_NumberOfDraws++;
240240
};
241241

242-
proto._changeTextureColor = function () {
242+
proto._updateColor = 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){
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)
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();
@@ -293,7 +305,7 @@
293305
if (textureLoaded) {
294306
var curColor = node.getColor();
295307
if (curColor.r !== 255 || curColor.g !== 255 || curColor.b !== 255)
296-
this._changeTextureColor();
308+
this._updateColor();
297309
}
298310
};
299311

@@ -327,12 +339,7 @@
327339

328340
proto._updateDisplayColor = function (parentColor) {
329341
cc.Node.CanvasRenderCmd.prototype._updateDisplayColor.call(this, parentColor);
330-
this._changeTextureColor();
331-
};
332-
333-
proto._syncDisplayColor = function(parentColor){
334-
cc.Node.CanvasRenderCmd.prototype._syncDisplayColor.call(this, parentColor);
335-
this._changeTextureColor();
342+
this._updateColor();
336343
};
337344

338345
proto._spriteFrameLoadedCallback = function (spriteFrame) {
@@ -342,7 +349,7 @@
342349
//TODO change
343350
var curColor = _t.getColor();
344351
if (curColor.r !== 255 || curColor.g !== 255 || curColor.b !== 255)
345-
_t._changeTextureColor();
352+
_t._updateColor();
346353

347354
_t.dispatchEvent("load");
348355
};
@@ -368,7 +375,7 @@
368375
//set the texture's color after the it loaded
369376
var locColor = locRenderCmd._displayedColor;
370377
if (locColor.r != 255 || locColor.g != 255 || locColor.b != 255)
371-
locRenderCmd._changeTextureColor();
378+
locRenderCmd._updateColor();
372379

373380
// by default use "Self Render".
374381
// if the sprite is added to a batchnode, then it will automatically switch to "batchnode Render"

extensions/ccui/base-classes/CCProtectedNodeCanvasRenderCmd.js

+1
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@
143143
var childLen = locChildren.length, pLen = locProtectedChildren.length;
144144

145145
this._syncStatus(parentCmd);
146+
this._dirtyFlag = 0;
146147

147148
node.sortAllChildren();
148149
node.sortAllProtectedChildren();

extensions/ccui/base-classes/CCProtectedNodeWebGLRenderCmd.js

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
//optimize performance for javascript
4848
currentStack.stack.push(currentStack.top);
4949
this._syncStatus(parentCmd);
50+
this._dirtyFlag = 0;
5051
currentStack.top = this._stackMatrix;
5152

5253
var locGrid = node.grid;

extensions/ccui/layouts/UILayoutCanvasRenderCmd.js

+1
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
node._clipElemType = node._stencil instanceof cc.Sprite;
129129

130130
this._syncStatus(parentCmd);
131+
this._dirtyFlag = 0;
131132

132133
cc.renderer.pushRenderCommand(this._rendererSaveCmd);
133134

extensions/ccui/layouts/UILayoutWebGLRenderCmd.js

+1
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@
159159
var currentStack = cc.current_stack;
160160
currentStack.stack.push(currentStack.top);
161161
this._syncStatus(parentCmd);
162+
this._dirtyFlag = 0;
162163
currentStack.top = this._stackMatrix;
163164

164165
node._clippingStencil.visit(this);

0 commit comments

Comments
 (0)