Skip to content

Commit ffb8a12

Browse files
committed
Fixed a bug that is ClippingNode draw error if inverted == true
1 parent d70597b commit ffb8a12

File tree

1 file changed

+9
-21
lines changed

1 file changed

+9
-21
lines changed

cocos2d/clipping-nodes/CCClippingNodeCanvasRenderCmd.js

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,8 @@
6060
scaleX = scaleX || cc.view.getScaleX();
6161
scaleY = scaleY ||cc.view.getScaleY();
6262
var wrapper = ctx || cc._renderContext, context = wrapper.getContext();
63-
var t = this._transform; //note: use local transform
64-
wrapper.save();
65-
context.transform(t.a, t.b, t.c, t.d, t.tx * scaleX, -t.ty * scaleY);
66-
context.beginPath();
63+
64+
wrapper.setTransform(this._transform, scaleX, scaleY);
6765
for (var i = 0; i < stencil._buffer.length; i++) {
6866
var vertices = stencil._buffer[i].verts;
6967
//TODO: need support circle etc
@@ -75,7 +73,6 @@
7573
for (var j = 1, len = vertices.length; j < len; j++)
7674
context.lineTo(vertices[j].x * scaleX, -vertices[j].y * scaleY);
7775
}
78-
wrapper.restore();
7976
};
8077
}else{
8178
stencil._parent = this._node;
@@ -94,9 +91,15 @@
9491
locCacheCtx.drawImage(canvas, 0, 0); //save the result to shareCache canvas
9592
} else {
9693
wrapper.save();
97-
wrapper.save(); //save for clip
94+
context.beginPath(); //save for clip
9895
//Because drawNode's content size is zero
9996
wrapper.setTransform(this._worldTransform, scaleX, scaleY);
97+
98+
if (this._node.inverted) {
99+
context.setTransform(1, 0, 0, 1, 0, 0);
100+
context.rect(0, 0, context.canvas.width, context.canvas.height);
101+
context.clip();
102+
}
100103
}
101104
};
102105

@@ -123,21 +126,6 @@
123126
//hack
124127
this._setStencilCompositionOperation(node._stencil);
125128
} else {
126-
wrapper.restore(); //it use for
127-
if (node.inverted) {
128-
var canvas = context.canvas;
129-
wrapper.save();
130-
context.setTransform(1, 0, 0, 1, 0, 0);
131-
132-
context.moveTo(0, 0);
133-
context.lineTo(0, canvas.height);
134-
context.lineTo(canvas.width, canvas.height);
135-
context.lineTo(canvas.width, 0);
136-
context.lineTo(0, 0);
137-
138-
wrapper.restore();
139-
}
140-
context.closePath();
141129
context.clip();
142130
}
143131
};

0 commit comments

Comments
 (0)