fix button pressAction scale issue

This commit is contained in:
andyque 2015-01-21 14:54:37 +08:00
parent 08d392dd5f
commit d58426db99
2 changed files with 29 additions and 30 deletions

View File

@ -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);
}
}

View File

@ -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;