Skip to content

Commit 2a9cda0

Browse files
committed
Merge pull request cocos2d#2647 from dingpinglv/Iss1267_MigrateUI
Fixed cocos2d/cocos2d-js/cocos2d#1267: migrated the up-to-date -x UI
2 parents 7a1a67f + a898614 commit 2a9cda0

File tree

9 files changed

+182
-144
lines changed

9 files changed

+182
-144
lines changed

extensions/ccui/layouts/UILayoutComponent.js

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ ccui.LayoutComponent = cc.Component.extend({
6666
_usingPercentHeight: false,
6767

6868
_actived: true,
69+
_isPercentOnly: false,
70+
6971
ctor: function () {
7072
this._name = ccui.LayoutComponent.NAME;
7173
},
@@ -425,10 +427,17 @@ ccui.LayoutComponent = cc.Component.extend({
425427
this._usingPercentHeight = false;
426428
},
427429

430+
setPercentOnlyEnabled: function(enable){
431+
this._isPercentOnly = enable;
432+
},
433+
428434
setActiveEnabled: function (enable) {
429435
this._actived = enable;
430436
},
431437
refreshLayout: function () {
438+
if(!this._actived)
439+
return;
440+
432441
var parent = this._getOwnerParent();
433442
if (parent == null)
434443
return;
@@ -439,7 +448,7 @@ ccui.LayoutComponent = cc.Component.extend({
439448

440449
switch (this._horizontalEdge) {
441450
case ccui.LayoutComponent.horizontalEdge.NONE:
442-
if (this._usingStretchWidth) {
451+
if (this._usingStretchWidth && !this._isPercentOnly) {
443452
ownerSize.width = parentSize.width * this._percentWidth;
444453
ownerPosition.x = this._leftMargin + ownerAnchor.x * ownerSize.width;
445454
} else {
@@ -450,31 +459,40 @@ ccui.LayoutComponent = cc.Component.extend({
450459
}
451460
break;
452461
case ccui.LayoutComponent.horizontalEdge.LEFT:
462+
if(this._isPercentOnly)
463+
break;
453464
if (this._usingPercentWidth || this._usingStretchWidth)
454465
ownerSize.width = parentSize.width * this._percentWidth;
455466
ownerPosition.x = this._leftMargin + ownerAnchor.x * ownerSize.width;
456467
break;
457468
case ccui.LayoutComponent.horizontalEdge.RIGHT:
469+
if(this._isPercentOnly)
470+
break;
458471
if (this._usingPercentWidth || this._usingStretchWidth)
459472
ownerSize.width = parentSize.width * this._percentWidth;
460473
ownerPosition.x = parentSize.width - (this._rightMargin + (1 - ownerAnchor.x) * ownerSize.width);
461474
break;
462475
case ccui.LayoutComponent.horizontalEdge.CENTER:
463-
if (this._usingPercentWidth || this._usingStretchWidth) {
476+
if(this._isPercentOnly)
477+
break;
478+
if (this._usingStretchWidth) {
464479
ownerSize.width = parentSize.width - this._leftMargin - this._rightMargin;
465480
if (ownerSize.width < 0)
466481
ownerSize.width = 0;
467482
ownerPosition.x = this._leftMargin + ownerAnchor.x * ownerSize.width;
468-
} else
483+
} else {
484+
if (this._usingPercentWidth)
485+
ownerSize.width = parentSize.width * this._percentWidth;
469486
ownerPosition.x = parentSize.width * this._positionPercentX;
487+
}
470488
break;
471489
default:
472490
break;
473491
}
474492

475493
switch (this._verticalEdge) {
476494
case ccui.LayoutComponent.verticalEdge.NONE:
477-
if (this._usingStretchHeight) {
495+
if (this._usingStretchHeight && !this._isPercentOnly) {
478496
ownerSize.height = parentSize.height * this._percentHeight;
479497
ownerPosition.y = this._bottomMargin + ownerAnchor.y * ownerSize.height;
480498
} else {
@@ -485,23 +503,32 @@ ccui.LayoutComponent = cc.Component.extend({
485503
}
486504
break;
487505
case ccui.LayoutComponent.verticalEdge.BOTTOM:
506+
if(this._isPercentOnly)
507+
break;
488508
if (this._usingPercentHeight || this._usingStretchHeight)
489509
ownerSize.height = parentSize.height * this._percentHeight;
490510
ownerPosition.y = this._bottomMargin + ownerAnchor.y * ownerSize.height;
491511
break;
492512
case ccui.LayoutComponent.verticalEdge.TOP:
513+
if(this._isPercentOnly)
514+
break;
493515
if (this._usingPercentHeight || this._usingStretchHeight)
494516
ownerSize.height = parentSize.height * this._percentHeight;
495517
ownerPosition.y = parentSize.height - (this._topMargin + (1 - ownerAnchor.y) * ownerSize.height);
496518
break;
497519
case ccui.LayoutComponent.verticalEdge.CENTER:
498-
if (this._usingPercentHeight || this._usingStretchHeight) {
520+
if(this._isPercentOnly)
521+
break;
522+
if (this._usingStretchHeight) {
499523
ownerSize.height = parentSize.height - this._topMargin - this._bottomMargin;
500524
if (ownerSize.height < 0)
501525
ownerSize.height = 0;
502526
ownerPosition.y = this._bottomMargin + ownerAnchor.y * ownerSize.height;
503-
} else
527+
} else {
528+
if(this._usingPercentHeight)
529+
ownerSize.height = parentSize.height * this._percentHeight;
504530
ownerPosition.y = parentSize.height * this._positionPercentY;
531+
}
505532
break;
506533
default:
507534
break;

extensions/ccui/uiwidgets/UIButton.js

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,10 @@ ccui.Button = ccui.Widget.extend(/** @lends ccui.Button# */{
185185
this.setCapInsetsPressedRenderer(this._capInsetsPressed);
186186
this.setCapInsetsDisabledRenderer(this._capInsetsDisabled);
187187
this.setBright(this._bright);
188+
189+
this._normalTextureAdaptDirty = true;
190+
this._pressedTextureAdaptDirty = true;
191+
this._disabledTextureAdaptDirty = true;
188192
},
189193

190194
/**
@@ -506,33 +510,31 @@ ccui.Button = ccui.Widget.extend(/** @lends ccui.Button# */{
506510
if (this.pressedActionEnabled){
507511
this._buttonNormalRenderer.stopAllActions();
508512
this._buttonClickedRenderer.stopAllActions();
509-
var zoomAction = cc.scaleTo(ccui.Button.ZOOM_ACTION_TIME_STEP, this._normalTextureScaleXInSize, this._normalTextureScaleYInSize);
510-
this._buttonNormalRenderer.runAction(zoomAction);
513+
//var zoomAction = cc.scaleTo(ccui.Button.ZOOM_ACTION_TIME_STEP, this._normalTextureScaleXInSize, this._normalTextureScaleYInSize);
514+
//fixme: the zoomAction will run in the next frame which will cause the _buttonNormalRenderer to a wrong scale
515+
//this._buttonNormalRenderer.runAction(zoomAction);
516+
this._buttonNormalRenderer.setScale(this._normalTextureScaleXInSize, this._normalTextureScaleYInSize);
511517
this._buttonClickedRenderer.setScale(this._pressedTextureScaleXInSize, this._pressedTextureScaleYInSize);
512518

513519
this._titleRenderer.stopAllActions();
514520
if (this._unifySize){
515521
var zoomTitleAction = cc.scaleTo(ccui.Button.ZOOM_ACTION_TIME_STEP, 1, 1);
516522
this._titleRenderer.runAction(zoomTitleAction);
517-
}else
518-
this._titleRenderer.runAction(zoomAction.clone());
523+
}else{
524+
this._titleRenderer.setScaleX(1);
525+
this._titleRenderer.setScaleY(1);
526+
}
519527
}
520528
} else {
521529
this._buttonNormalRenderer.stopAllActions();
522530
this._buttonNormalRenderer.setScale(this._normalTextureScaleXInSize, this._normalTextureScaleYInSize);
523531

524532
this._titleRenderer.stopAllActions();
525-
526533
if (this._scale9Enabled)
527534
this._buttonNormalRenderer.setColor(cc.color.WHITE);
528535

529-
if(this._unifySize){
530-
this._titleRenderer.setScaleX(1);
531-
this._titleRenderer.setScaleY(1);
532-
}else{
533-
this._titleRenderer.setScaleX(this._normalTextureScaleXInSize);
534-
this._titleRenderer.setScaleY(this._normalTextureScaleYInSize);
535-
}
536+
this._titleRenderer.setScaleX(1);
537+
this._titleRenderer.setScaleY(1);
536538
}
537539
},
538540

@@ -554,11 +556,7 @@ ccui.Button = ccui.Widget.extend(/** @lends ccui.Button# */{
554556
locNormalRenderer.setScale(this._pressedTextureScaleXInSize + this._zoomScale, this._pressedTextureScaleYInSize + this._zoomScale);
555557

556558
this._titleRenderer.stopAllActions();
557-
if (this._unifySize){
558-
var zoomTitleAction = cc.scaleTo(ccui.Button.ZOOM_ACTION_TIME_STEP, 1 + this._zoomScale, 1 + this._zoomScale);
559-
this._titleRenderer.runAction(zoomTitleAction);
560-
} else
561-
this._titleRenderer.runAction(zoomAction.clone());
559+
this._titleRenderer.runAction(cc.scaleTo(ccui.Button.ZOOM_ACTION_TIME_STEP, 1 + this._zoomScale, 1 + this._zoomScale));
562560
}
563561
} else {
564562
locNormalRenderer.setVisible(true);
@@ -567,17 +565,9 @@ ccui.Button = ccui.Widget.extend(/** @lends ccui.Button# */{
567565
locNormalRenderer.stopAllActions();
568566
locNormalRenderer.setScale(this._normalTextureScaleXInSize + this._zoomScale, this._normalTextureScaleYInSize + this._zoomScale);
569567

570-
if (this._scale9Enabled)
571-
locNormalRenderer.setState(ccui.Scale9Sprite.state.GRAY);
572-
573568
this._titleRenderer.stopAllActions();
574-
if (this._unifySize){
575-
this._titleRenderer.setScaleX(1 + this._zoomScale);
576-
this._titleRenderer.setScaleY(1 + this._zoomScale);
577-
}else{
578-
this._titleRenderer.setScaleX(this._normalTextureScaleXInSize + this._zoomScale);
579-
this._titleRenderer.setScaleY(this._normalTextureScaleYInSize + this._zoomScale);
580-
}
569+
this._titleRenderer.setScaleX(1 + this._zoomScale);
570+
this._titleRenderer.setScaleY(1 + this._zoomScale);
581571
}
582572
},
583573

@@ -831,6 +821,15 @@ ccui.Button = ccui.Widget.extend(/** @lends ccui.Button# */{
831821
return this._zoomScale;
832822
},
833823

824+
/**
825+
* Returns the normalize of texture size
826+
* @since v3.3
827+
* @returns {cc.Size}
828+
*/
829+
getNormalTextureSize: function(){
830+
return this._normalTextureSize;
831+
},
832+
834833
/**
835834
* Sets title fontName to ccui.Button.
836835
* @param {String} fontName

extensions/ccui/uiwidgets/UIImageView.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ ccui.ImageView = ccui.Widget.extend(/** @lends ccui.ImageView# */{
174174
} else
175175
this.ignoreContentAdaptWithSize(this._prevIgnoreSize);
176176
this.setCapInsets(this._capInsets);
177+
this._imageRendererAdaptDirty = true;
177178
},
178179

179180
/**
@@ -256,10 +257,11 @@ ccui.ImageView = ccui.Widget.extend(/** @lends ccui.ImageView# */{
256257
if (!this._scale9Enabled)
257258
this._imageRenderer.setScale(1.0);
258259
} else {
259-
if (this._scale9Enabled)
260+
if (this._scale9Enabled){
260261
this._imageRenderer.setPreferredSize(this._contentSize);
261-
else {
262-
var textureSize = this._imageRenderer.getContentSize();
262+
this._imageRenderer.setScale(1);
263+
} else {
264+
var textureSize = this._imageTextureSize;
263265
if (textureSize.width <= 0.0 || textureSize.height <= 0.0) {
264266
this._imageRenderer.setScale(1.0);
265267
return;

extensions/ccui/uiwidgets/UILoadingBar.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ ccui.LoadingBar = ccui.Widget.extend(/** @lends ccui.LoadingBar# */{
188188
this.ignoreContentAdaptWithSize(this._prevIgnoreSize);
189189
this.setCapInsets(this._capInsets);
190190
this.setPercent(this._percent);
191+
this._barRendererAdaptDirty = true;
191192
},
192193

193194
/**
@@ -328,9 +329,10 @@ ccui.LoadingBar = ccui.Widget.extend(/** @lends ccui.LoadingBar# */{
328329
}
329330
} else {
330331
this._totalLength = locContentSize.width;
331-
if (this._scale9Enabled)
332+
if (this._scale9Enabled){
332333
this._setScale9Scale();
333-
else {
334+
locBarRender.setScale(1.0);
335+
} else {
334336
var textureSize = this._barRendererTextureSize;
335337
if (textureSize.width <= 0.0 || textureSize.height <= 0.0) {
336338
locBarRender.setScale(1.0);

extensions/ccui/uiwidgets/UISlider.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
ccui.Slider = ccui.Widget.extend(/** @lends ccui.Slider# */{
3434
_barRenderer: null,
3535
_progressBarRenderer: null,
36+
_barTextureSize: null,
3637
_progressBarTextureSize: null,
3738
_slidBallNormalRenderer: null,
3839
_slidBallPressedRenderer: null,
@@ -74,6 +75,7 @@ ccui.Slider = ccui.Widget.extend(/** @lends ccui.Slider# */{
7475
* var uiSlider = new ccui.Slider();
7576
*/
7677
ctor: function (barTextureName, normalBallTextureName, resType) {
78+
this._barTextureSize = cc.size(0,0);
7779
this._progressBarTextureSize = cc.size(0, 0);
7880
this._capInsetsBarRenderer = cc.rect(0, 0, 0, 0);
7981
this._capInsetsProgressBarRenderer = cc.rect(0, 0, 0, 0);
@@ -155,6 +157,7 @@ ccui.Slider = ccui.Widget.extend(/** @lends ccui.Slider# */{
155157
this._progressBarRendererDirty = true;
156158
this._updateContentSizeWithTextureSize(this._barRenderer.getContentSize());
157159
this._findLayout();
160+
this._barTextureSize = this._barRenderer.getContentSize();
158161
},
159162

160163
/**
@@ -233,6 +236,8 @@ ccui.Slider = ccui.Widget.extend(/** @lends ccui.Slider# */{
233236
}
234237
this.setCapInsetsBarRenderer(this._capInsetsBarRenderer);
235238
this.setCapInsetProgressBarRenderer(this._capInsetsProgressBarRenderer);
239+
this._barRendererAdaptDirty = true;
240+
this._progressBarRendererDirty = true;
236241
},
237242

238243
/**
@@ -448,7 +453,7 @@ ccui.Slider = ccui.Widget.extend(/** @lends ccui.Slider# */{
448453
var dis = this._barLength * res;
449454
this._slidBallRenderer.setPosition(dis, this._contentSize.height / 2);
450455
if (this._scale9Enabled)
451-
this._progressBarRenderer.setPreferredSize(cc.size(dis, this._progressBarTextureSize.height));
456+
this._progressBarRenderer.setPreferredSize(cc.size(dis, this._contentSize.height));
452457
else {
453458
var spriteRenderer = this._progressBarRenderer;
454459
var rect = spriteRenderer.getTextureRect();
@@ -595,9 +600,9 @@ ccui.Slider = ccui.Widget.extend(/** @lends ccui.Slider# */{
595600
this._barLength = this._contentSize.width;
596601
if (this._scale9Enabled) {
597602
this._barRenderer.setPreferredSize(this._contentSize);
598-
}
599-
else {
600-
var btextureSize = this._barRenderer.getContentSize();
603+
this._barRenderer.setScale(1.0);
604+
} else {
605+
var btextureSize = this._barTextureSize;
601606
if (btextureSize.width <= 0.0 || btextureSize.height <= 0.0) {
602607
this._barRenderer.setScale(1.0);
603608
return;
@@ -627,7 +632,7 @@ ccui.Slider = ccui.Widget.extend(/** @lends ccui.Slider# */{
627632
else {
628633
if (this._scale9Enabled) {
629634
this._progressBarRenderer.setPreferredSize(this._contentSize);
630-
this._progressBarTextureSize = this._progressBarRenderer.getContentSize();
635+
this._progressBarRenderer.setScale(1);
631636
}
632637
else {
633638
var ptextureSize = this._progressBarTextureSize;

extensions/ccui/uiwidgets/UIText.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
THE SOFTWARE.
2424
****************************************************************************/
2525

26-
2726
/**
2827
* The text control of Cocos UI.
2928
* @class
@@ -85,9 +84,9 @@ ccui.Text = ccui.Widget.extend(/** @lends ccui.Text# */{
8584
init: function (textContent, fontName, fontSize) {
8685
if (ccui.Widget.prototype.init.call(this)) {
8786
if(arguments.length > 0){
88-
this.setString(textContent);
8987
this.setFontName(fontName);
9088
this.setFontSize(fontSize);
89+
this.setString(textContent);
9190
}
9291
return true;
9392
}
@@ -325,6 +324,17 @@ ccui.Text = ccui.Widget.extend(/** @lends ccui.Text# */{
325324
return this._labelRenderer;
326325
},
327326

327+
//@since v3.3
328+
getAutoRenderSize: function(){
329+
var virtualSize = this._labelRenderer.getContentSize();
330+
if (!this._ignoreSize) {
331+
this._labelRenderer.setDimensions(0, 0);
332+
virtualSize = this._labelRenderer.getContentSize();
333+
this._labelRenderer.setDimensions(this._contentSize.width, this._contentSize.height);
334+
}
335+
return virtualSize;
336+
},
337+
328338
_labelScaleChangedWithSize: function () {
329339
var locContentSize = this._contentSize;
330340
if (this._ignoreSize) {

extensions/ccui/uiwidgets/UITextBMFont.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,14 @@ ccui.LabelBMFont = ccui.TextBMFont = ccui.Widget.extend(/** @lends ccui.TextBMFo
6868
setFntFile: function (fileName) {
6969
if (!fileName)
7070
return;
71+
this._fntFileName = fileName;
7172

72-
var _self = this;
73-
_self._fntFileName = fileName;
74-
75-
_self._fntFileHasInit = true;
76-
_self._labelBMFontRenderer.initWithString(this._stringValue, fileName);
73+
this._fntFileHasInit = true;
74+
this._labelBMFontRenderer.initWithString(this._stringValue, fileName);
75+
this._updateContentSizeWithTextureSize(this._labelBMFontRenderer.getContentSize());
76+
this._labelBMFontRendererAdaptDirty = true;
7777

78+
var _self = this;
7879
var locRenderer = _self._labelBMFontRenderer;
7980
if(!locRenderer._textureLoaded){
8081
locRenderer.addEventListener("load", function(){
@@ -101,9 +102,9 @@ ccui.LabelBMFont = ccui.TextBMFont = ccui.Widget.extend(/** @lends ccui.TextBMFo
101102
if(value == this._labelBMFontRenderer.getString())
102103
return;
103104
this._stringValue = value;
105+
this._labelBMFontRenderer.setString(value);
104106
if (!this._fntFileHasInit)
105107
return;
106-
this._labelBMFontRenderer.setString(value);
107108
this._updateContentSizeWithTextureSize(this._labelBMFontRenderer.getContentSize());
108109
this._labelBMFontRendererAdaptDirty = true;
109110
},

0 commit comments

Comments
 (0)