Skip to content

Commit f03f3d6

Browse files
committed
Merge pull request #1298 from xingsenma/develop_layoutIssue
issue #3251 fix bug for layout
2 parents 48bc624 + c27abca commit f03f3d6

File tree

2 files changed

+127
-46
lines changed

2 files changed

+127
-46
lines changed

extensions/CocoStudio/GUI/BaseClasses/UIWidget.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ ccs.UIWidget = ccs.Class.extend(/** @lends ccs.UIWidget# */{
300300
*/
301301
removeAllChildren: function () {
302302
var childrenLength = this._children.length;
303-
if (this._children.length <= 0) {
303+
if (childrenLength <= 0) {
304304
return
305305
}
306306
for (var i = 0; i < childrenLength; ++i) {
@@ -313,12 +313,12 @@ ccs.UIWidget = ccs.Class.extend(/** @lends ccs.UIWidget# */{
313313
* @param {ccs.UIWidget} child
314314
*/
315315
reorderChild: function (child) {
316-
cc.ArrayRemoveObject(this._children, child);
317316
var childrenCount = this._children.length;
318317
if (childrenCount <= 0) {
319-
this._children.push(child);
318+
return;
320319
}
321320
else {
321+
cc.ArrayRemoveObject(this._children, child);
322322
var seekSucceed = false;
323323
var arrayChildren = this._children;
324324
for (var i = childrenCount - 1; i >= 0; --i) {
@@ -509,7 +509,7 @@ ccs.UIWidget = ccs.Class.extend(/** @lends ccs.UIWidget# */{
509509
*/
510510
ignoreContentAdaptWithSize: function (ignore) {
511511
this._ignoreSize = ignore;
512-
var locSize = this.getContentSize();
512+
var locSize;
513513
if (this._ignoreSize) {
514514
locSize = this.getContentSize();
515515
}

extensions/CocoStudio/GUI/Layouts/UILayout.js

+123-42
Original file line numberDiff line numberDiff line change
@@ -206,39 +206,21 @@ ccs.UILayout = ccs.UIWidget.extend(/** @lends ccs.UILayout# */{
206206
}
207207
this._backGroundImageFileName = fileName;
208208
this._bgImageTexType = texType;
209-
if (this._backGroundScale9Enabled) {
210-
switch (this._bgImageTexType) {
211-
case ccs.TextureResType.local:
212-
this._backGroundImage.initWithFile(fileName);
213-
break;
214-
case ccs.TextureResType.plist:
215-
this._backGroundImage.initWithSpriteFrameName(fileName);
216-
break;
217-
default:
218-
break;
219-
}
220-
this._backGroundImage.setPreferredSize(this._size);
221-
}
222-
else {
223-
switch (this._bgImageTexType) {
224-
case ccs.TextureResType.local:
225-
this._backGroundImage.initWithFile(fileName);
226-
break;
227-
case ccs.TextureResType.plist:
228-
this._backGroundImage.initWithSpriteFrameName(fileName);
229-
break;
230-
default:
231-
break;
232-
}
209+
switch (this._bgImageTexType) {
210+
case ccs.TextureResType.local:
211+
this._backGroundImage.initWithFile(fileName);
212+
break;
213+
case ccs.TextureResType.plist:
214+
this._backGroundImage.initWithSpriteFrameName(fileName);
215+
break;
216+
default:
217+
break;
233218
}
234219
if (this._backGroundScale9Enabled) {
235-
this._backGroundImage.setColor(this.getColor());
236-
this._backGroundImage.setOpacity(this.getOpacity());
237-
}
238-
else {
239-
this._backGroundImage.setColor(this.getColor());
240-
this._backGroundImage.setOpacity(this.getOpacity());
220+
this._backGroundImage.setPreferredSize(this._size);
241221
}
222+
this._backGroundImage.setColor(this.getColor());
223+
this._backGroundImage.setOpacity(this.getOpacity());
242224
this._backGroundImageTextureSize = this._backGroundImage.getContentSize();
243225
this._backGroundImage.setPosition(cc.p(this._size.width / 2.0, this._size.height / 2.0));
244226
},
@@ -285,15 +267,13 @@ ccs.UILayout = ccs.UIWidget.extend(/** @lends ccs.UILayout# */{
285267
addBackGroundImage: function () {
286268
if (this._backGroundScale9Enabled) {
287269
this._backGroundImage = cc.Scale9Sprite.create();
288-
this._backGroundImage.setZOrder(-1);
289-
this._renderer.addChild(this._backGroundImage);
290270
this._backGroundImage.setPreferredSize(this._size);
291271
}
292272
else {
293273
this._backGroundImage = cc.Sprite.create();
294-
this._backGroundImage.setZOrder(-1);
295-
this._renderer.addChild(this._backGroundImage);
296274
}
275+
this._backGroundImage.setZOrder(-1);
276+
this._renderer.addChild(this._backGroundImage);
297277
this._backGroundImage.setPosition(cc.p(this._size.width / 2.0, this._size.height / 2.0));
298278
},
299279

@@ -772,8 +752,8 @@ ccs.UILayout = ccs.UIWidget.extend(/** @lends ccs.UILayout# */{
772752
}
773753
var locRelativeWidgetMargin;
774754
var locMargin = locLayoutParameter.getMargin();
775-
if (locRelativeWidget) {
776-
locRelativeWidgetMargin = locRelativeWidget.getLayoutParameter(ccs.LayoutParameterType.relative).getMargin();
755+
if (locRelativeWidgetLP) {
756+
locRelativeWidgetMargin = locRelativeWidgetLP.getMargin();
777757
}
778758
//handle margin
779759
switch (locAlign) {
@@ -810,28 +790,128 @@ ccs.UILayout = ccs.UIWidget.extend(/** @lends ccs.UILayout# */{
810790
break;
811791

812792
case ccs.UIRelativeAlign.locationAboveLeftAlign:
793+
locFinalPosY += locMargin.bottom;
794+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopCenterHorizontal
795+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopLeft
796+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignNone
797+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopRight)
798+
{
799+
locFinalPosY += locRelativeWidgetMargin.top;
800+
}
801+
locFinalPosY += locMargin.left;
802+
break;
813803
case ccs.UIRelativeAlign.locationAboveCenter:
804+
locFinalPosY += locMargin.bottom;
805+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopCenterHorizontal
806+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopLeft
807+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignNone
808+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopRight)
809+
{
810+
locFinalPosY += locRelativeWidgetMargin.top;
811+
}
812+
break;
814813
case ccs.UIRelativeAlign.locationAboveRightAlign:
815814
locFinalPosY += locMargin.bottom;
816-
locFinalPosY += locRelativeWidgetMargin.top;
815+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopCenterHorizontal
816+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopLeft
817+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignNone
818+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopRight)
819+
{
820+
locFinalPosY += locRelativeWidgetMargin.top;
821+
}
822+
locFinalPosX -= locMargin.right;
817823
break;
818824
case ccs.UIRelativeAlign.locationLeftOfTopAlign:
825+
locFinalPosX -= locMargin.right;
826+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopLeft
827+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignNone
828+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftBottom
829+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftCenterVertical)
830+
{
831+
locFinalPosX -= locRelativeWidgetMargin.left;
832+
}
833+
locFinalPosY -= locMargin.top;
834+
break;
819835
case ccs.UIRelativeAlign.locationLeftOfCenter:
836+
locFinalPosX -= locMargin.right;
837+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopLeft
838+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignNone
839+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftBottom
840+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftCenterVertical)
841+
{
842+
locFinalPosX -= locRelativeWidgetMargin.left;
843+
}
844+
break;
820845
case ccs.UIRelativeAlign.locationLeftOfBottomAlign:
821846
locFinalPosX -= locMargin.right;
822-
locFinalPosX -= locRelativeWidgetMargin.left;
847+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopLeft
848+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignNone
849+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftBottom
850+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftCenterVertical)
851+
{
852+
locFinalPosX -= locRelativeWidgetMargin.left;
853+
}
854+
locFinalPosY += locMargin.bottom;
855+
break;
823856
break;
824857
case ccs.UIRelativeAlign.locationRightOfTopAlign:
858+
locFinalPosX += locMargin.left;
859+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopRight
860+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightBottom
861+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightCenterVertical)
862+
{
863+
locFinalPosX += locRelativeWidgetMargin.right;
864+
}
865+
locFinalPosY -= locMargin.top;
866+
break;
825867
case ccs.UIRelativeAlign.locationRightOfCenter:
868+
locFinalPosX += locMargin.left;
869+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopRight
870+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightBottom
871+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightCenterVertical)
872+
{
873+
locFinalPosX += locRelativeWidgetMargin.right;
874+
}
875+
break;
826876
case ccs.UIRelativeAlign.locationRightOfBottomAlign:
827877
locFinalPosX += locMargin.left;
828-
locFinalPosX += locRelativeWidgetMargin.right;
878+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentTopRight
879+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightBottom
880+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightCenterVertical)
881+
{
882+
locFinalPosX += locRelativeWidgetMargin.right;
883+
}
884+
locFinalPosY += locMargin.bottom;
885+
break;
829886
break;
830887
case ccs.UIRelativeAlign.locationBelowLeftAlign:
888+
locFinalPosY -= locMargin.top;
889+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftBottom
890+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightBottom
891+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentBottomCenterHorizontal)
892+
{
893+
locFinalPosY -= locRelativeWidgetMargin.bottom;
894+
}
895+
locFinalPosX += locMargin.left;
896+
break;
831897
case ccs.UIRelativeAlign.locationBelowCenter:
898+
locFinalPosY -= locMargin.top;
899+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftBottom
900+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightBottom
901+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentBottomCenterHorizontal)
902+
{
903+
locFinalPosY -= locRelativeWidgetMargin.bottom;
904+
}
905+
break;
832906
case ccs.UIRelativeAlign.locationBelowRightAlign:
833907
locFinalPosY -= locMargin.top;
834-
locFinalPosY -= locRelativeWidgetMargin.bottom;
908+
if (locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentLeftBottom
909+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentRightBottom
910+
&& locRelativeWidgetLP.getAlign() != ccs.UIRelativeAlign.alignParentBottomCenterHorizontal)
911+
{
912+
locFinalPosY -= locRelativeWidgetMargin.bottom;
913+
}
914+
locFinalPosX -= locMargin.right;
835915
break;
836916
default:
837917
break;
@@ -930,7 +1010,7 @@ ccs.UIRectClippingNode = cc.ClippingNode.extend({
9301010
this._arrRect[3] = cc.p(0, this._clippingSize.height);
9311011

9321012
var green = cc.c4f(0, 1, 0, 1);
933-
this._innerStencil.drawPoly(this._arrRect, 4, green, 0, green);
1013+
//this._innerStencil.drawPoly(this._arrRect,green, 0, green);
9341014
if (cc.Browser.supportWebGL) {
9351015
if (cc.ClippingNode.prototype.init.call(this, this._innerStencil)) {
9361016
return true;
@@ -954,7 +1034,7 @@ ccs.UIRectClippingNode = cc.ClippingNode.extend({
9541034
this._arrRect[3] = cc.p(0, this._clippingSize.height);
9551035
var green = cc.c4f(0, 1, 0, 1);
9561036
this._innerStencil.clear();
957-
this._innerStencil.drawPoly(this._arrRect, 4, green, 0, green);
1037+
//this._innerStencil.drawPoly(this._arrRect, green, 0, green);
9581038
},
9591039

9601040
setClippingEnabled: function (enabled) {
@@ -1015,6 +1095,7 @@ ccs.UIRectClippingNode = cc.ClippingNode.extend({
10151095

10161096
this._orderOfArrival = 0;
10171097
context.restore();
1098+
this._stencil.visit();
10181099
},
10191100

10201101
setEnabled: function (enabled) {

0 commit comments

Comments
 (0)