Skip to content

Commit 9f65531

Browse files
committed
Merge pull request cocos2d#3179 from pandamicro/develop
Fix BLEND_SRC and ScrollView issues
2 parents 1af39e1 + 8bea141 commit 9f65531

File tree

4 files changed

+24
-40
lines changed

4 files changed

+24
-40
lines changed

cocos2d/core/platform/CCMacro.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -447,13 +447,11 @@ cc.MIRRORED_REPEAT = 0x8370;
447447
* @name cc.BLEND_SRC
448448
* @type Number
449449
*/
450-
cc.defineGetterSetter(cc, "BLEND_SRC", function (){
450+
cc.BLEND_SRC = cc.SRC_ALPHA;
451+
cc.game.addEventListener(cc.game.EVENT_RENDERER_INITED, function () {
451452
if (cc._renderType === cc.game.RENDER_TYPE_WEBGL
452453
&& cc.OPTIMIZE_BLEND_FUNC_FOR_PREMULTIPLIED_ALPHA) {
453-
return cc.ONE;
454-
}
455-
else {
456-
return cc.SRC_ALPHA;
454+
cc.BLEND_SRC = cc.ONE;
457455
}
458456
});
459457

extensions/ccui/uiwidgets/scroll-widget/UIScrollView.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,12 @@ ccui.ScrollView = ccui.Layout.extend(/** @lends ccui.ScrollView# */{
180180
* @param {cc.Size} size inner container size.
181181
*/
182182
setInnerContainerSize: function (size) {
183-
var innerContainer = this._innerContainer;
184-
var locSize = this._contentSize;
185-
var innerSizeWidth = locSize.width, innerSizeHeight = locSize.height;
186-
var originalInnerSize = innerContainer.getContentSize();
183+
var innerContainer = this._innerContainer,
184+
locSize = this._contentSize,
185+
innerSizeWidth = locSize.width, innerSizeHeight = locSize.height,
186+
originalInnerSize = innerContainer.getContentSize(),
187+
renderCmd = this._renderCmd,
188+
newInnerSize, offset;
187189
if (size.width < locSize.width)
188190
cc.log("Inner width <= ScrollView width, it will be force sized!");
189191
else
@@ -195,24 +197,29 @@ ccui.ScrollView = ccui.Layout.extend(/** @lends ccui.ScrollView# */{
195197
innerSizeHeight = size.height;
196198

197199
innerContainer.setContentSize(cc.size(innerSizeWidth, innerSizeHeight));
198-
var newInnerSize, offset;
199200
switch (this.direction) {
200201
case ccui.ScrollView.DIR_VERTICAL:
201202
newInnerSize = innerContainer.getContentSize();
202203
offset = originalInnerSize.height - newInnerSize.height;
204+
// Made child nodes transform available for scroll
205+
renderCmd.transform(renderCmd.getParentRenderCmd(), true);
203206
this._scrollChildren(0, offset);
204207
break;
205208
case ccui.ScrollView.DIR_HORIZONTAL:
206209
if (innerContainer.getRightBoundary() <= locSize.width) {
207210
newInnerSize = innerContainer.getContentSize();
208211
offset = originalInnerSize.width - newInnerSize.width;
212+
// Made child nodes transform available for scroll
213+
renderCmd.transform(renderCmd.getParentRenderCmd(), true);
209214
this._scrollChildren(offset, 0);
210215
}
211216
break;
212217
case ccui.ScrollView.DIR_BOTH:
213218
newInnerSize = innerContainer.getContentSize();
214219
var offsetY = originalInnerSize.height - newInnerSize.height;
215220
var offsetX = (innerContainer.getRightBoundary() <= locSize.width) ? originalInnerSize.width - newInnerSize.width : 0;
221+
// Made child nodes transform available for scroll
222+
renderCmd.transform(renderCmd.getParentRenderCmd(), true);
216223
this._scrollChildren(offsetX, offsetY);
217224
break;
218225
default:
@@ -326,9 +333,9 @@ ccui.ScrollView = ccui.Layout.extend(/** @lends ccui.ScrollView# */{
326333
},
327334

328335
updateChildren: function () {
329-
var child;
336+
var child, i, l;
330337
var childrenArray = this._innerContainer._children;
331-
for(var i = 0; i < childrenArray.length; i++) {
338+
for(i = 0, l = childrenArray.length; i < l; i++) {
332339
child = childrenArray[i];
333340
if(child._inViewRect === true && this._isInContainer(child) === false)
334341
child._inViewRect = false;

extensions/ccui/uiwidgets/scroll-widget/UIScrollViewCanvasRenderCmd.js

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,17 @@
1414
var node = this._node;
1515
if (!node._visible)
1616
return;
17-
cc.renderer.pushRenderCommand(this);
1817
var currentID = node.__instanceId;
18+
19+
cc.renderer.pushRenderCommand(this);
1920
cc.renderer._turnToCacheMode(currentID);
2021

2122
ccui.Layout.CanvasRenderCmd.prototype.visit.call(this, parentCmd);
23+
2224
this._dirtyFlag = 0;
2325
cc.renderer._turnToNormalMode();
2426
};
2527

26-
proto.transform = function(parentCmd) {
27-
ccui.Layout.CanvasRenderCmd.prototype.transform.call(this,parentCmd);
28-
var node = this._node;
29-
var child;
30-
var childrenArray = node._innerContainer._children;
31-
for(var i = 0; i < childrenArray.length; i++) {
32-
child = childrenArray[i];
33-
if(child._renderCmd._dirtyFlag & cc.Node._dirtyFlags.transformDirty) {
34-
child._inViewRect = node._isInContainer(child);
35-
}
36-
}
37-
};
38-
3928
proto.rendering = function (ctx) {
4029
var currentID = this._node.__instanceId;
4130
var locCmds = cc.renderer._cacheToCanvasCmds[currentID], i, len,
@@ -53,4 +42,4 @@
5342
locCmds[i].rendering(context, scaleX, scaleY);
5443
}
5544
};
56-
})();
45+
})();

extensions/ccui/uiwidgets/scroll-widget/UIScrollViewWebGLRenderCmd.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,6 @@
1111
var proto = ccui.ScrollView.WebGLRenderCmd.prototype = Object.create(ccui.Layout.WebGLRenderCmd.prototype);
1212
proto.constructor = ccui.ScrollView.WebGLRenderCmd;
1313

14-
proto.transform = function(parentCmd) {
15-
ccui.Layout.WebGLRenderCmd.prototype.transform.call(this,parentCmd);
16-
var node = this._node;
17-
var child;
18-
var childrenArray = node._innerContainer._children;
19-
for(var i = 0; i < childrenArray.length; i++) {
20-
child = childrenArray[i];
21-
if(child._renderCmd._dirtyFlag & cc.Node._dirtyFlags.transformDirty) {
22-
child._inViewRect = node._isInContainer(child);
23-
}
24-
}
25-
};
2614
proto.visit = function(parentCmd) {
2715
var node = this._node;
2816
if (!node._visible)
@@ -33,6 +21,8 @@
3321
cc.renderer._turnToCacheMode(currentID);
3422

3523
ccui.Layout.WebGLRenderCmd.prototype.visit.call(this, parentCmd);
24+
// Need to update children after do layout
25+
node.updateChildren();
3626

3727
this._dirtyFlag = 0;
3828
cc.renderer._turnToNormalMode();
@@ -53,4 +43,4 @@
5343
locCmds[i].rendering(context);
5444
}
5545
}
56-
})();
46+
})();

0 commit comments

Comments
 (0)