Skip to content

Commit 6662817

Browse files
committed
Merge pull request cocos2d#14616 from zilongshanren/fixLoadingBarScale9Rendering
Refactoring Scale9 ui widgets to use the latest RenderingType feature.
2 parents 2251b52 + bb515dc commit 6662817

File tree

18 files changed

+342
-315
lines changed

18 files changed

+342
-315
lines changed

cocos/ui/UIButton.cpp

+31-114
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,6 @@ _capInsetsDisabled(Rect::ZERO),
6666
_normalTextureSize(_contentSize),
6767
_pressedTextureSize(_contentSize),
6868
_disabledTextureSize(_contentSize),
69-
_normalTextureScaleXInSize(1.0f),
70-
_normalTextureScaleYInSize(1.0f),
71-
_pressedTextureScaleXInSize(1.0f),
72-
_pressedTextureScaleYInSize(1.0f),
7369
_normalTextureLoaded(false),
7470
_pressedTextureLoaded(false),
7571
_disabledTextureLoaded(false),
@@ -146,9 +142,9 @@ void Button::initRenderer()
146142
_buttonNormalRenderer = Scale9Sprite::create();
147143
_buttonClickedRenderer = Scale9Sprite::create();
148144
_buttonDisabledRenderer = Scale9Sprite::create();
149-
_buttonClickedRenderer->setScale9Enabled(false);
150-
_buttonNormalRenderer->setScale9Enabled(false);
151-
_buttonDisabledRenderer->setScale9Enabled(false);
145+
_buttonClickedRenderer->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
146+
_buttonNormalRenderer->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
147+
_buttonDisabledRenderer->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
152148

153149
addProtectedChild(_buttonNormalRenderer, NORMAL_RENDERER_Z, -1);
154150
addProtectedChild(_buttonClickedRenderer, PRESSED_RENDERER_Z, -1);
@@ -171,9 +167,16 @@ void Button::setScale9Enabled(bool able)
171167

172168
_scale9Enabled = able;
173169

174-
_buttonNormalRenderer->setScale9Enabled(_scale9Enabled);
175-
_buttonClickedRenderer->setScale9Enabled(_scale9Enabled);
176-
_buttonDisabledRenderer->setScale9Enabled(_scale9Enabled);
170+
if (_scale9Enabled) {
171+
_buttonNormalRenderer->setRenderingType(Scale9Sprite::RenderingType::SLICE);
172+
_buttonClickedRenderer->setRenderingType(Scale9Sprite::RenderingType::SLICE);
173+
_buttonDisabledRenderer->setRenderingType(Scale9Sprite::RenderingType::SLICE);
174+
}else{
175+
_buttonNormalRenderer->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
176+
_buttonClickedRenderer->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
177+
_buttonDisabledRenderer->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
178+
}
179+
177180

178181
if (_scale9Enabled)
179182
{
@@ -252,6 +255,10 @@ void Button::loadTextureNormal(const std::string& normal,TextureResType texType)
252255
break;
253256
}
254257
}
258+
//FIXME: https://github.com/cocos2d/cocos2d-x/issues/12249
259+
if (!_ignoreSize) {
260+
_customSize = _buttonNormalRenderer->getContentSize();
261+
}
255262
this->setupNormalTexture(textureLoaded);
256263
}
257264

@@ -443,8 +450,8 @@ void Button::onPressStateChangedToNormal()
443450

444451
// Action *zoomAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP, _normalTextureScaleXInSize, _normalTextureScaleYInSize);
445452
//fixme: the zoomAction will run in the next frame which will cause the _buttonNormalRenderer to a wrong scale
446-
_buttonNormalRenderer->setScale(_normalTextureScaleXInSize, _normalTextureScaleYInSize);
447-
_buttonClickedRenderer->setScale(_pressedTextureScaleXInSize, _pressedTextureScaleYInSize);
453+
_buttonNormalRenderer->setScale(1.0);
454+
_buttonClickedRenderer->setScale(1.0);
448455

449456
if(nullptr != _titleRenderer)
450457
{
@@ -465,7 +472,7 @@ void Button::onPressStateChangedToNormal()
465472
else
466473
{
467474
_buttonNormalRenderer->stopAllActions();
468-
_buttonNormalRenderer->setScale(_normalTextureScaleXInSize, _normalTextureScaleYInSize);
475+
_buttonNormalRenderer->setScale(1.0);
469476

470477
if(nullptr != _titleRenderer)
471478
{
@@ -493,12 +500,12 @@ void Button::onPressStateChangedToPressed()
493500
_buttonClickedRenderer->stopAllActions();
494501

495502
Action *zoomAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP,
496-
_pressedTextureScaleXInSize + _zoomScale,
497-
_pressedTextureScaleYInSize + _zoomScale);
503+
1.0 + _zoomScale,
504+
1.0 + _zoomScale);
498505
_buttonClickedRenderer->runAction(zoomAction);
499506

500-
_buttonNormalRenderer->setScale(_pressedTextureScaleXInSize + _zoomScale,
501-
_pressedTextureScaleYInSize + _zoomScale);
507+
_buttonNormalRenderer->setScale(1.0 + _zoomScale,
508+
1.0 + _zoomScale);
502509

503510
if(nullptr != _titleRenderer)
504511
{
@@ -516,7 +523,7 @@ void Button::onPressStateChangedToPressed()
516523
_buttonDisabledRenderer->setVisible(false);
517524

518525
_buttonNormalRenderer->stopAllActions();
519-
_buttonNormalRenderer->setScale(_normalTextureScaleXInSize +_zoomScale, _normalTextureScaleYInSize + _zoomScale);
526+
_buttonNormalRenderer->setScale(1.0 +_zoomScale, 1.0 + _zoomScale);
520527

521528
if(nullptr != _titleRenderer)
522529
{
@@ -544,8 +551,8 @@ void Button::onPressStateChangedToDisabled()
544551
}
545552

546553
_buttonClickedRenderer->setVisible(false);
547-
_buttonNormalRenderer->setScale(_normalTextureScaleXInSize, _normalTextureScaleYInSize);
548-
_buttonClickedRenderer->setScale(_pressedTextureScaleXInSize, _pressedTextureScaleYInSize);
554+
_buttonNormalRenderer->setScale(1.0);
555+
_buttonClickedRenderer->setScale(1.0);
549556
}
550557

551558
void Button::updateTitleLocation()
@@ -649,112 +656,22 @@ Node* Button::getVirtualRenderer()
649656

650657
void Button::normalTextureScaleChangedWithSize()
651658
{
652-
653-
if (_ignoreSize && !_unifySize)
654-
{
655-
if (!_scale9Enabled)
656-
{
657-
_buttonNormalRenderer->setScale(1.0f);
658-
_normalTextureScaleXInSize = _normalTextureScaleYInSize = 1.0f;
659-
}
660-
}
661-
else
662-
{
663-
if (_scale9Enabled)
664-
{
665-
_buttonNormalRenderer->setPreferredSize(_contentSize);
666-
_normalTextureScaleXInSize = _normalTextureScaleYInSize = 1.0f;
667-
_buttonNormalRenderer->setScale(_normalTextureScaleXInSize,_normalTextureScaleYInSize);
668-
}
669-
else
670-
{
671-
Size textureSize = _normalTextureSize;
672-
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
673-
{
674-
_buttonNormalRenderer->setScale(1.0f);
675-
return;
676-
}
677-
float scaleX = _contentSize.width / textureSize.width;
678-
float scaleY = _contentSize.height / textureSize.height;
679-
_buttonNormalRenderer->setScaleX(scaleX);
680-
_buttonNormalRenderer->setScaleY(scaleY);
681-
_normalTextureScaleXInSize = scaleX;
682-
_normalTextureScaleYInSize = scaleY;
683-
}
684-
}
659+
_buttonNormalRenderer->setPreferredSize(_contentSize);
685660

686661
_buttonNormalRenderer->setPosition(_contentSize.width / 2.0f, _contentSize.height / 2.0f);
687662
}
688663

689664
void Button::pressedTextureScaleChangedWithSize()
690665
{
666+
_buttonClickedRenderer->setPreferredSize(_contentSize);
691667

692-
if (_ignoreSize && !_unifySize)
693-
{
694-
if (!_scale9Enabled)
695-
{
696-
_buttonClickedRenderer->setScale(1.0f);
697-
_pressedTextureScaleXInSize = _pressedTextureScaleYInSize = 1.0f;
698-
}
699-
}
700-
else
701-
{
702-
if (_scale9Enabled)
703-
{
704-
_buttonClickedRenderer->setPreferredSize(_contentSize);
705-
_pressedTextureScaleXInSize = _pressedTextureScaleYInSize = 1.0f;
706-
_buttonClickedRenderer->setScale(_pressedTextureScaleXInSize,_pressedTextureScaleYInSize);
707-
}
708-
else
709-
{
710-
Size textureSize = _pressedTextureSize;
711-
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
712-
{
713-
_buttonClickedRenderer->setScale(1.0f);
714-
return;
715-
}
716-
float scaleX = _contentSize.width / _pressedTextureSize.width;
717-
float scaleY = _contentSize.height / _pressedTextureSize.height;
718-
_buttonClickedRenderer->setScaleX(scaleX);
719-
_buttonClickedRenderer->setScaleY(scaleY);
720-
_pressedTextureScaleXInSize = scaleX;
721-
_pressedTextureScaleYInSize = scaleY;
722-
}
723-
}
724668
_buttonClickedRenderer->setPosition(_contentSize.width / 2.0f, _contentSize.height / 2.0f);
725669
}
726670

727671
void Button::disabledTextureScaleChangedWithSize()
728672
{
729-
730-
if (_ignoreSize && !_unifySize)
731-
{
732-
if (!_scale9Enabled)
733-
{
734-
_buttonDisabledRenderer->setScale(1.0f);
735-
}
736-
}
737-
else
738-
{
739-
if (_scale9Enabled)
740-
{
741-
_buttonDisabledRenderer->setScale(1.0);
742-
_buttonDisabledRenderer->setPreferredSize(_contentSize);
743-
}
744-
else
745-
{
746-
Size textureSize = _disabledTextureSize;
747-
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
748-
{
749-
_buttonDisabledRenderer->setScale(1.0f);
750-
return;
751-
}
752-
float scaleX = _contentSize.width / _disabledTextureSize.width;
753-
float scaleY = _contentSize.height / _disabledTextureSize.height;
754-
_buttonDisabledRenderer->setScaleX(scaleX);
755-
_buttonDisabledRenderer->setScaleY(scaleY);
756-
}
757-
}
673+
_buttonDisabledRenderer->setPreferredSize(_contentSize);
674+
758675
_buttonDisabledRenderer->setPosition(_contentSize.width / 2.0f, _contentSize.height / 2.0f);
759676
}
760677

cocos/ui/UIButton.h

-5
Original file line numberDiff line numberDiff line change
@@ -360,11 +360,6 @@ class CC_GUI_DLL Button : public Widget
360360
Size _pressedTextureSize;
361361
Size _disabledTextureSize;
362362

363-
float _normalTextureScaleXInSize;
364-
float _normalTextureScaleYInSize;
365-
float _pressedTextureScaleXInSize;
366-
float _pressedTextureScaleYInSize;
367-
368363
bool _normalTextureLoaded;
369364
bool _pressedTextureLoaded;
370365
bool _disabledTextureLoaded;

cocos/ui/UIImageView.cpp

+12-31
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ bool ImageView::init(const std::string &imageFileName, TextureResType texType)
112112
void ImageView::initRenderer()
113113
{
114114
_imageRenderer = Scale9Sprite::create();
115-
_imageRenderer->setScale9Enabled(false);
115+
_imageRenderer->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
116116

117117
addProtectedChild(_imageRenderer, IMAGE_RENDERER_Z, -1);
118118
}
@@ -136,7 +136,10 @@ void ImageView::loadTexture(const std::string& fileName, TextureResType texType)
136136
default:
137137
break;
138138
}
139-
139+
//FIXME: https://github.com/cocos2d/cocos2d-x/issues/12249
140+
if (!_ignoreSize) {
141+
_customSize = _imageRenderer->getContentSize();
142+
}
140143
this->setupTexture();
141144
}
142145

@@ -185,7 +188,11 @@ void ImageView::setScale9Enabled(bool able)
185188

186189

187190
_scale9Enabled = able;
188-
_imageRenderer->setScale9Enabled(_scale9Enabled);
191+
if (_scale9Enabled) {
192+
_imageRenderer->setRenderingType(Scale9Sprite::RenderingType::SLICE);
193+
}else{
194+
_imageRenderer->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
195+
}
189196

190197
if (_scale9Enabled)
191198
{
@@ -257,34 +264,8 @@ Node* ImageView::getVirtualRenderer()
257264

258265
void ImageView::imageTextureScaleChangedWithSize()
259266
{
260-
if (_ignoreSize)
261-
{
262-
if (!_scale9Enabled)
263-
{
264-
_imageRenderer->setScale(1.0f);
265-
}
266-
}
267-
else
268-
{
269-
if (_scale9Enabled)
270-
{
271-
_imageRenderer->setPreferredSize(_contentSize);
272-
_imageRenderer->setScale(1.0f);
273-
}
274-
else
275-
{
276-
Size textureSize = _imageTextureSize;
277-
if (textureSize.width <= 0.0f || textureSize.height <= 0.0f)
278-
{
279-
_imageRenderer->setScale(1.0f);
280-
return;
281-
}
282-
float scaleX = _contentSize.width / textureSize.width;
283-
float scaleY = _contentSize.height / textureSize.height;
284-
_imageRenderer->setScaleX(scaleX);
285-
_imageRenderer->setScaleY(scaleY);
286-
}
287-
}
267+
_imageRenderer->setPreferredSize(_contentSize);
268+
288269
_imageRenderer->setPosition(_contentSize.width / 2.0f, _contentSize.height / 2.0f);
289270
}
290271

cocos/ui/UILayout.cpp

+12-4
Original file line numberDiff line numberDiff line change
@@ -557,8 +557,12 @@ void Layout::setBackGroundImageScale9Enabled(bool able)
557557
addBackGroundImage();
558558
setBackGroundImage(_backGroundImageFileName,_bgImageTexType);
559559
}
560-
_backGroundImage->setScale9Enabled(_backGroundScale9Enabled);
561-
560+
if(_backGroundScale9Enabled){
561+
_backGroundImage->setRenderingType(Scale9Sprite::RenderingType::SLICE);
562+
}else{
563+
_backGroundImage->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
564+
}
565+
562566
if (able) {
563567
_backGroundImage->setPreferredSize(_contentSize);
564568
}
@@ -580,7 +584,11 @@ void Layout::setBackGroundImage(const std::string& fileName,TextureResType texTy
580584
if (_backGroundImage == nullptr)
581585
{
582586
addBackGroundImage();
583-
_backGroundImage->setScale9Enabled(_backGroundScale9Enabled);
587+
if(_backGroundScale9Enabled){
588+
_backGroundImage->setRenderingType(Scale9Sprite::RenderingType::SLICE);
589+
}else{
590+
_backGroundImage->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
591+
}
584592
}
585593
_backGroundImageFileName = fileName;
586594
_bgImageTexType = texType;
@@ -656,7 +664,7 @@ void Layout::supplyTheLayoutParameterLackToChild(Widget *child)
656664
void Layout::addBackGroundImage()
657665
{
658666
_backGroundImage = Scale9Sprite::create();
659-
_backGroundImage->setScale9Enabled(false);
667+
_backGroundImage->setRenderingType(Scale9Sprite::RenderingType::SIMPLE);
660668

661669
addProtectedChild(_backGroundImage, BACKGROUNDIMAGE_Z, -1);
662670

0 commit comments

Comments
 (0)