Skip to content

Commit b67bb36

Browse files
committed
Merge pull request #2454 from musikov/develop
Scale9Sprite size, RenderTexture size, colorized progress timer fix on canvas renderer
2 parents 78ae041 + 32a8bcf commit b67bb36

File tree

4 files changed

+42
-20
lines changed

4 files changed

+42
-20
lines changed

cocos2d/core/renderer/RendererCanvas.js

+27-11
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,19 @@ if (cc._renderType === cc._RENDER_TYPE_CANVAS) {
5454
* drawing all renderer command to cache canvas' context
5555
* @param {CanvasRenderingContext2D} ctx
5656
* @param {Number} [instanceID]
57+
* @param {Number} [scaleX]
58+
* @param {Number} [scaleY]
5759
*/
58-
_renderingToCacheCanvas: function (ctx, instanceID) {
60+
_renderingToCacheCanvas: function (ctx, instanceID, scaleX, scaleY) {
5961
if (!ctx)
6062
cc.log("The context of RenderTexture is invalid.");
6163

64+
scaleX = cc.isUndefined(scaleX) ? 1 : scaleX;
65+
scaleY = cc.isUndefined(scaleY) ? 1 : scaleY;
6266
instanceID = instanceID || this._currentID;
6367
var locCmds = this._cacheToCanvasCmds[instanceID], i, len;
6468
for (i = 0, len = locCmds.length; i < len; i++) {
65-
locCmds[i].rendering(ctx, 1, 1);
69+
locCmds[i].rendering(ctx, scaleX, scaleY);
6670
}
6771
locCmds.length = 0;
6872
var locIDs = this._cacheInstanceIds;
@@ -530,15 +534,27 @@ if (cc._renderType === cc._RENDER_TYPE_CANVAS) {
530534

531535
//draw sprite
532536
var image = locSprite._texture.getHtmlElementObj();
533-
context.drawImage(image,
534-
locTextureCoord.renderX,
535-
locTextureCoord.renderY,
536-
locTextureCoord.width,
537-
locTextureCoord.height,
538-
flipXOffset, flipYOffset,
539-
locDrawSizeCanvas.width,
540-
locDrawSizeCanvas.height
541-
);
537+
if (locSprite._colorized) {
538+
context.drawImage(image,
539+
0,
540+
0,
541+
locTextureCoord.width,
542+
locTextureCoord.height,
543+
flipXOffset, flipYOffset,
544+
locDrawSizeCanvas.width,
545+
locDrawSizeCanvas.height
546+
);
547+
} else {
548+
context.drawImage(image,
549+
locTextureCoord.renderX,
550+
locTextureCoord.renderY,
551+
locTextureCoord.width,
552+
locTextureCoord.height,
553+
flipXOffset, flipYOffset,
554+
locDrawSizeCanvas.width,
555+
locDrawSizeCanvas.height
556+
);
557+
}
542558

543559
context.restore();
544560
cc.g_NumberOfDraws++;

cocos2d/render-texture/CCRenderTexture.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,8 @@ cc.RenderTexture = cc.Node.extend(/** @lends cc.RenderTexture# */{
495495
//cc._renderContext = cc._mainRenderContextBackup;
496496
//cc.view._resetScale();
497497

498-
cc.renderer._renderingToCacheCanvas(this._cacheContext, this.__instanceId);
498+
var scale = cc.contentScaleFactor();
499+
cc.renderer._renderingToCacheCanvas(this._cacheContext, this.__instanceId, scale, scale);
499500

500501
//TODO
501502
/*//restore viewport

extensions/ccui/base-classes/UIScale9Sprite.js

+12-7
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,17 @@ ccui.Scale9Sprite = cc.Node.extend(/** @lends ccui.Scale9Sprite# */{
203203
_cacheScale9Sprite: function(){
204204
if(!this._scale9Image)
205205
return;
206-
var size = this._contentSize, locCanvas = this._cacheCanvas;
206+
207+
var locScaleFactor = cc.contentScaleFactor();
208+
var size = this._contentSize;
209+
var sizeInPixels = cc.size(size.width * locScaleFactor, size.height * locScaleFactor);
210+
211+
var locCanvas = this._cacheCanvas;
207212
var contentSizeChanged = false;
208-
if(locCanvas.width != size.width || locCanvas.height != size.height){
209-
locCanvas.width = size.width;
210-
locCanvas.height = size.height;
211-
this._cacheContext.translate(0, size.height);
213+
if(locCanvas.width != sizeInPixels.width || locCanvas.height != sizeInPixels.height){
214+
locCanvas.width = sizeInPixels.width;
215+
locCanvas.height = sizeInPixels.height;
216+
this._cacheContext.translate(0, sizeInPixels.height);
212217
contentSizeChanged = true;
213218
}
214219

@@ -217,8 +222,8 @@ ccui.Scale9Sprite = cc.Node.extend(/** @lends ccui.Scale9Sprite# */{
217222
this._scale9Image.visit();
218223

219224
//draw to cache canvas
220-
this._cacheContext.clearRect(0, 0, size.width, -size.height);
221-
cc.renderer._renderingToCacheCanvas(this._cacheContext, this.__instanceId);
225+
this._cacheContext.clearRect(0, 0, sizeInPixels.width, -sizeInPixels.height);
226+
cc.renderer._renderingToCacheCanvas(this._cacheContext, this.__instanceId, locScaleFactor, locScaleFactor);
222227

223228
if(contentSizeChanged)
224229
this._cacheSprite.setTextureRect(cc.rect(0,0, size.width, size.height));

extensions/gui/control-extension/CCScale9Sprite.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ cc.Scale9Sprite = cc.Node.extend(/** @lends cc.Scale9Sprite# */{
218218

219219
//draw to cache canvas
220220
this._cacheContext.clearRect(0, 0, sizeInPixels.width, -sizeInPixels.height);
221-
cc.renderer._renderingToCacheCanvas(this._cacheContext, this.__instanceId);
221+
cc.renderer._renderingToCacheCanvas(this._cacheContext, this.__instanceId, locScaleFactor, locScaleFactor);
222222

223223
if(contentSizeChanged)
224224
this._cacheSprite.setTextureRect(cc.rect(0,0, size.width, size.height));

0 commit comments

Comments
 (0)