diff --git a/cocos/ui/UIButton.cpp b/cocos/ui/UIButton.cpp index c1a92fbfe0..7847428e18 100644 --- a/cocos/ui/UIButton.cpp +++ b/cocos/ui/UIButton.cpp @@ -395,19 +395,21 @@ void Button::onPressStateChangedToNormal() _buttonNormalRenderer->stopAllActions(); _buttonClickedRenderer->stopAllActions(); - Action *zoomAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP, _normalTextureScaleXInSize, _normalTextureScaleYInSize); - _buttonNormalRenderer->runAction(zoomAction); +// Action *zoomAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP, _normalTextureScaleXInSize, _normalTextureScaleYInSize); + //fixme: the zoomAction will run in the next frame which will cause the _buttonNormalRenderer to a wrong scale + _buttonNormalRenderer->setScale(_normalTextureScaleXInSize, _normalTextureScaleYInSize); _buttonClickedRenderer->setScale(_pressedTextureScaleXInSize, _pressedTextureScaleYInSize); _titleRenderer->stopAllActions(); if (_unifySize) { - Action *zoomTitleAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP, 1, 1); + Action *zoomTitleAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP, 1.0f, 1.0f); _titleRenderer->runAction(zoomTitleAction); } else { - _titleRenderer->runAction(zoomAction->clone()); + _titleRenderer->setScaleX(1.0f); + _titleRenderer->setScaleY(1.0f); } } } @@ -417,16 +419,10 @@ void Button::onPressStateChangedToNormal() _buttonNormalRenderer->setScale(_normalTextureScaleXInSize, _normalTextureScaleYInSize); _titleRenderer->stopAllActions(); - if (_unifySize) - { - _titleRenderer->setScaleX(1.0f); - _titleRenderer->setScaleY(1.0f); - } - else - { - _titleRenderer->setScaleX(_normalTextureScaleXInSize); - _titleRenderer->setScaleY(_normalTextureScaleYInSize); - } + + _titleRenderer->setScaleX(1.0f); + _titleRenderer->setScaleY(1.0f); + } } @@ -453,14 +449,14 @@ void Button::onPressStateChangedToPressed() _buttonNormalRenderer->setScale(_pressedTextureScaleXInSize + _zoomScale, _pressedTextureScaleYInSize + _zoomScale); _titleRenderer->stopAllActions(); + Action *zoomTitleAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP, 1.0f + _zoomScale, 1.0f + _zoomScale); if (_unifySize) { - Action *zoomTitleAction = ScaleTo::create(ZOOM_ACTION_TIME_STEP, 1 + _zoomScale, 1 + _zoomScale); _titleRenderer->runAction(zoomTitleAction); } else { - _titleRenderer->runAction(zoomAction->clone()); + _titleRenderer->runAction(zoomTitleAction->clone()); } } } @@ -474,16 +470,9 @@ void Button::onPressStateChangedToPressed() _buttonNormalRenderer->setScale(_normalTextureScaleXInSize +_zoomScale, _normalTextureScaleYInSize + _zoomScale); _titleRenderer->stopAllActions(); - if (_unifySize) - { - _titleRenderer->setScaleX(1.0f + _zoomScale); - _titleRenderer->setScaleY(1.0f + _zoomScale); - } - else - { - _titleRenderer->setScaleX(_normalTextureScaleXInSize + _zoomScale); - _titleRenderer->setScaleY(_normalTextureScaleYInSize + _zoomScale); - } + + _titleRenderer->setScaleX(1.0f + _zoomScale); + _titleRenderer->setScaleY(1.0f + _zoomScale); } } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp index a349aec452..4d298bcd31 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp @@ -216,17 +216,27 @@ bool UIButtonTest_Scale9_State_Change::init() _uiLayer->addChild(alert); // Create the button - Button* button = Button::create("cocosui/backtotopnormal.png", "cocosui/backtotoppressed.png"); + Button* button = Button::create("cocosui/button.png"); // open scale9 render button->ignoreContentAdaptWithSize(false); button->setScale9Enabled(true); - button->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); - button->setContentSize(Size(200, 60)); - button->setCapInsets(Rect(30,10,40,20)); + button->setPosition(Vec2(widgetSize.width / 2.0f - 100, widgetSize.height / 2.0f)); + button->setContentSize(Size(180, 60)); + button->setTitleText("Hello Scale9"); button->setPressedActionEnabled(false); button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Scale9_State_Change::touchEvent, this)); _uiLayer->addChild(button); + Button* button2 = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); + // open scale9 render + button2->ignoreContentAdaptWithSize(false); + button2->setScale9Enabled(true); + button2->setTitleText("Hello scale9"); + button2->setPosition(Vec2(widgetSize.width / 2.0f + 100, widgetSize.height / 2.0f)); + button2->setContentSize(Size(180, 60)); + button2->setPressedActionEnabled(true); + button2->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Scale9_State_Change::touchEvent, this)); + _uiLayer->addChild(button2); return true; } return false;