【分享】CocoStudio UIButton setPressedActionEnabled(true) 子控件不跟着缩放

具体情况是这样的:美术给了我 一个按钮的背景图片 一个按钮的文字图片,用背景图片创建一个button,然后把文字图片添加进去(注意关闭文字图片的交互功能)
设置UIButton setPressedActionEnabled(true) 后运行 发现只有背景图片有缩放动作,文字图片没有缩放

我觉的这应该是bug,一般来说父控件缩放了那么子控件应该跟随缩放才对

解决办法: 修改UIButton::onPressStateChangedToNormal() 方法和 UIButton::onPressStateChangedToPressed()


void UIButton::onPressStateChangedToNormal()
{
    m_pButtonNormalRenderer->setVisible(true);
    m_pButtonClickedRenderer->setVisible(false);
    m_pButtonDisableRenderer->setVisible(false);
    if (m_bPressedActionEnabled)
    {
        m_pButtonNormalRenderer->stopAllActions();
        m_pButtonClickedRenderer->stopAllActions();
        m_pButtonDisableRenderer->stopAllActions();
        CCAction *zoomAction = CCScaleTo::create(0.05f, 1.0f);
        CCAction *zoomAction1 = CCScaleTo::create(0.05f, 1.0f);
        CCAction *zoomAction2 = CCScaleTo::create(0.05f, 1.0f);
        m_pButtonNormalRenderer->runAction(zoomAction);
        m_pButtonClickedRenderer->runAction(zoomAction1);
        m_pButtonDisableRenderer->runAction(zoomAction2);

        //添加下面这些代码
       CCObject *item;
       CCARRAY_FOREACH(getChildren(),item)
       {
             UIWidget* widget = dynamic_cast<UIWidget*>(item);
             widget->stopAllActions();
             CCAction *zw = CCScaleTo::create(0.05f, 1.0f);
             widget->runAction(zw);
       }
    }
}

void UIButton::onPressStateChangedToPressed()
{
    m_pButtonNormalRenderer->setVisible(false);
    m_pButtonClickedRenderer->setVisible(true);
    m_pButtonDisableRenderer->setVisible(false);
    if (m_bPressedActionEnabled)
    {
        m_pButtonNormalRenderer->stopAllActions();
        m_pButtonClickedRenderer->stopAllActions();
        m_pButtonDisableRenderer->stopAllActions();
        CCAction *zoomAction = CCScaleTo::create(0.05f, 1.1f);
        CCAction *zoomAction1 = CCScaleTo::create(0.05f, 1.1f);
        CCAction *zoomAction2 = CCScaleTo::create(0.05f, 1.1f);
        m_pButtonNormalRenderer->runAction(zoomAction);
        m_pButtonClickedRenderer->runAction(zoomAction1);
        m_pButtonDisableRenderer->runAction(zoomAction2);

        //添加下面这些代码
       CCObject *item;
       CCARRAY_FOREACH(getChildren(),item)
       {
             UIWidget* widget = dynamic_cast<UIWidget*>(item);
             widget->stopAllActions();
             CCAction *zw = CCScaleTo::create(0.05f, 1.1f);
             widget->runAction(zw);
       }
    }
}

在cocos2d3.0的版本 CCARRAY_FOREACH(getChildren(),item) 报错,请问应该怎么改,谢谢

3.0中getChildren()返回的是Vector<Node *>, 使用方法参考:
https://github.com/fusijie/Cocos2d-x3.0-Release-Note/blob/master/cocos2d--vector<t>.md

请问应该怎么改,我改了好久都报错。

这是我现在改的,但还是报错
CCObject item;
vector<Node
>&a = getChildren();
CCARRAY_FOREACH(&a, object)
{
Widget* widget = dynamic_cast<Widget*>(item);
widget->stopAllActions();
CCAction *zw = CCScaleTo::create(0.05f, 1.0f);
widget->runAction(zw);
}

这是我现在改的,但是还是不行,麻烦帮我看看哪里错了?

Ref item;
Vector<Node
> pChildrenArray = this->getChildren();
Vector<Node*>::iterator iter;

        for(iter=pChildrenArray.begin();iter!=pChildrenArray.end();iter++)
        { 
            Widget* widget = dynamic_cast<Widget*>(item); 
            widget->stopAllActions(); 
            Action *zw = ScaleTo::create(0.05f, 1.0f); 
            widget->runAction(zw); 
        }

这是我现在改的,但是还是不行,麻烦帮我看看哪里错了?

Ref item;
Vector<Node
> pChildrenArray = this->getChildren();
Vector<Node*>::iterator iter;

        for(iter=pChildrenArray.begin();iter!=pChildrenArray.end();iter++) 
        {  
            Widget* widget = dynamic_cast<Widget*>(item);  
            widget->stopAllActions();  
            Action *zw = ScaleTo::create(0.05f, 1.0f);  
            widget->runAction(zw);  
        }

标题头cocos2d 3.11 如何修改