@@ -66,10 +66,6 @@ _capInsetsDisabled(Rect::ZERO),
66
66
_normalTextureSize (_contentSize),
67
67
_pressedTextureSize (_contentSize),
68
68
_disabledTextureSize (_contentSize),
69
- _normalTextureScaleXInSize (1 .0f ),
70
- _normalTextureScaleYInSize (1 .0f ),
71
- _pressedTextureScaleXInSize (1 .0f ),
72
- _pressedTextureScaleYInSize (1 .0f ),
73
69
_normalTextureLoaded (false ),
74
70
_pressedTextureLoaded (false ),
75
71
_disabledTextureLoaded (false ),
@@ -146,9 +142,9 @@ void Button::initRenderer()
146
142
_buttonNormalRenderer = Scale9Sprite::create ();
147
143
_buttonClickedRenderer = Scale9Sprite::create ();
148
144
_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 );
152
148
153
149
addProtectedChild (_buttonNormalRenderer, NORMAL_RENDERER_Z, -1 );
154
150
addProtectedChild (_buttonClickedRenderer, PRESSED_RENDERER_Z, -1 );
@@ -171,9 +167,16 @@ void Button::setScale9Enabled(bool able)
171
167
172
168
_scale9Enabled = able;
173
169
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
+
177
180
178
181
if (_scale9Enabled)
179
182
{
@@ -252,6 +255,10 @@ void Button::loadTextureNormal(const std::string& normal,TextureResType texType)
252
255
break ;
253
256
}
254
257
}
258
+ // FIXME: https://github.com/cocos2d/cocos2d-x/issues/12249
259
+ if (!_ignoreSize) {
260
+ _customSize = _buttonNormalRenderer->getContentSize ();
261
+ }
255
262
this ->setupNormalTexture (textureLoaded);
256
263
}
257
264
@@ -443,8 +450,8 @@ void Button::onPressStateChangedToNormal()
443
450
444
451
// Action *zoomAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP, _normalTextureScaleXInSize, _normalTextureScaleYInSize);
445
452
// 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 );
448
455
449
456
if (nullptr != _titleRenderer)
450
457
{
@@ -465,7 +472,7 @@ void Button::onPressStateChangedToNormal()
465
472
else
466
473
{
467
474
_buttonNormalRenderer->stopAllActions ();
468
- _buttonNormalRenderer->setScale (_normalTextureScaleXInSize, _normalTextureScaleYInSize );
475
+ _buttonNormalRenderer->setScale (1.0 );
469
476
470
477
if (nullptr != _titleRenderer)
471
478
{
@@ -493,12 +500,12 @@ void Button::onPressStateChangedToPressed()
493
500
_buttonClickedRenderer->stopAllActions ();
494
501
495
502
Action *zoomAction = ScaleTo::create (ZOOM_ACTION_TIME_STEP,
496
- _pressedTextureScaleXInSize + _zoomScale,
497
- _pressedTextureScaleYInSize + _zoomScale);
503
+ 1.0 + _zoomScale,
504
+ 1.0 + _zoomScale);
498
505
_buttonClickedRenderer->runAction (zoomAction);
499
506
500
- _buttonNormalRenderer->setScale (_pressedTextureScaleXInSize + _zoomScale,
501
- _pressedTextureScaleYInSize + _zoomScale);
507
+ _buttonNormalRenderer->setScale (1.0 + _zoomScale,
508
+ 1.0 + _zoomScale);
502
509
503
510
if (nullptr != _titleRenderer)
504
511
{
@@ -516,7 +523,7 @@ void Button::onPressStateChangedToPressed()
516
523
_buttonDisabledRenderer->setVisible (false );
517
524
518
525
_buttonNormalRenderer->stopAllActions ();
519
- _buttonNormalRenderer->setScale (_normalTextureScaleXInSize +_zoomScale, _normalTextureScaleYInSize + _zoomScale);
526
+ _buttonNormalRenderer->setScale (1.0 +_zoomScale, 1.0 + _zoomScale);
520
527
521
528
if (nullptr != _titleRenderer)
522
529
{
@@ -544,8 +551,8 @@ void Button::onPressStateChangedToDisabled()
544
551
}
545
552
546
553
_buttonClickedRenderer->setVisible (false );
547
- _buttonNormalRenderer->setScale (_normalTextureScaleXInSize, _normalTextureScaleYInSize );
548
- _buttonClickedRenderer->setScale (_pressedTextureScaleXInSize, _pressedTextureScaleYInSize );
554
+ _buttonNormalRenderer->setScale (1.0 );
555
+ _buttonClickedRenderer->setScale (1.0 );
549
556
}
550
557
551
558
void Button::updateTitleLocation ()
@@ -649,112 +656,22 @@ Node* Button::getVirtualRenderer()
649
656
650
657
void Button::normalTextureScaleChangedWithSize ()
651
658
{
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);
685
660
686
661
_buttonNormalRenderer->setPosition (_contentSize.width / 2 .0f , _contentSize.height / 2 .0f );
687
662
}
688
663
689
664
void Button::pressedTextureScaleChangedWithSize ()
690
665
{
666
+ _buttonClickedRenderer->setPreferredSize (_contentSize);
691
667
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
- }
724
668
_buttonClickedRenderer->setPosition (_contentSize.width / 2 .0f , _contentSize.height / 2 .0f );
725
669
}
726
670
727
671
void Button::disabledTextureScaleChangedWithSize ()
728
672
{
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
+
758
675
_buttonDisabledRenderer->setPosition (_contentSize.width / 2 .0f , _contentSize.height / 2 .0f );
759
676
}
760
677
0 commit comments