MenuItemSprite如何实现按钮缩放

界面上 放一个按钮,点击一下,按钮变大一下,我的代码如下,可是没有得到我想要的效果,它缩放是从左下角开始的,我想要缩放是从中间开始的,设置过锚点,spriteNormal->setAnchorPoint(Point(0.5, 0.5));,可是没用,求高手帮助

    auto menu = Menu::create();
    
    auto spriteNormal = Sprite::create(s_pathSettingBtnOk);
    spriteNormal->setScale(0.5, 0.5);
    auto spriteSelected = Sprite::create(s_pathSettingBtnOk);
    
    auto settingBtnOkItem = MenuItemSprite::create(spriteNormal, spriteSelected, nullptr, CC_CALLBACK_1(SettingLayer::settingBtnOkCallback, this));
    settingBtnOkItem->setPosition(Point(this->winSize.width / 2, this->winSize.height / 2));
    menu->addChild(settingBtnOkItem);
    
    menu->setPosition(Point(0, 0));
    this->addChild(menu);


```
settingBtnOkItem->getNormalImage()->setAnchorPoint(Point(0.5, 0.5));
settingBtnOkItem->getSelectedImage()->setAnchorPoint(Point(0.5, 0.5));

我用js写的代码 你参考下

var createScaleMenuItem = function (sName,iName,func,objc){
var normal_sprite = new cc.Sprite(sName);
var select_sprite = new cc.Sprite(sName);
select_sprite.scaleY = 0.95;
var posX = normal_sprite.getContentSize().width/2;
var posY = normal_sprite.getContentSize().height/2;
if (iName) {
var top_sprite1 = new cc.Sprite(iName);
var top_sprite2 = new cc.Sprite(iName);
top_sprite1.setPosition(posX,posY);
top_sprite2.setPosition(posX,posY);
normal_sprite.addChild(top_sprite1);
select_sprite.addChild(top_sprite2);
}
var tmItemSprite = new cc.MenuItemSprite(
normal_sprite,
select_sprite,
func, objc);
var spimg = tmItemSprite.getNormalImage();
//cc.log(“spimg %d %d %d %d”,spimg.x,spimg.y,spimg.anchorX,spimg.anchorY);
tmItemSprite.getNormalImage().setAnchorPoint(0.5,0);
tmItemSprite.getSelectedImage().setAnchorPoint(0.5,0);
tmItemSprite.getNormalImage().setPosition(posX,0);
tmItemSprite.getSelectedImage().setPosition(posX,0);
return tmItemSprite;
}

使用Button控件。设置按下动作有效即可,v3.3版本会开放倍数设置接口。

auto btn = Button::create(“CloseNormal.png”);
btn->setPressedActionEnabled(true);
btn->setPosition(Vec2(200,200));
this->addChild(btn);

修改CCMenuItem.cpp,如下:

void MenuItemSprite::setSelectedImage(Node* image)
{
if (image != _normalImage)
{
if (image)
{
addChild(image, 0, kSelectedTag);
image->setAnchorPoint(Vec2(0, 0));

        // 当按钮的选中状态放大时,根据放大倍数移动点击状态图片的大小(添加此处代码)
        Vec2 point = image->getPosition();
        Size size = image->getContentSize();
        image->setPosition(Vec2(point.x - (image->getScaleX() - 1) / 2 * size.width, point.y - (image->getScaleY() - 1) / 2 * size.height));
    }

    if (_selectedImage)
    {
        removeChild(_selectedImage, true);
    }

    _selectedImage = image;
    this->updateImagesVisibility();
}

}