一张图,比如hellocpp里的返回图标,如何做灰化按钮?

如标题,只有一张图,做一个带灰化效果的按钮,如何做?

auto closeItem = MyMenuItemImage::create(
    "CloseNormal.png",
    "CloseSelected.png",
    CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

就是hellocpp里的这段,那个返回图标,
只有一张正常显示的图,如何做灰化按钮的效果?

我的版本是3.3的,只灰化一张图,如何做?

package com.study.jnilearn;

static cocos2d::Sprite* getGraySprite(cocos2d::Sprite* normalsprite) 
    {
        if ( !normalsprite) 
        {
            return nullptr;//CreateDefaultSprite();
        }
        //CCSprite转成CCimage
        const cocos2d::Vec2& p = normalsprite->getAnchorPoint();
        normalsprite->setAnchorPoint(cocos2d::Vec2(0, 0));
        cocos2d::RenderTexture *outTexture = cocos2d::RenderTexture::create((int)normalsprite->getContentSize().width, (int)normalsprite->getContentSize().height);
        outTexture->begin();
        normalsprite->visit();
        outTexture->end();
        normalsprite->setAnchorPoint(p);

        cocos2d::Image* finalImage = outTexture->newImage();
        unsigned char *pData = finalImage->getData();
        int iIndex = 0;

        for (int i = 0; i < finalImage->getHeight(); i ++)
        {
            for (int j = 0; j < finalImage->getWidth(); j ++)
            {
                // gray
                int iBPos = iIndex;
                unsigned int iB = pData;
                iIndex ++;
                unsigned int iG = pData;
                iIndex ++;
                unsigned int iR = pData;
                iIndex ++;
                iIndex ++;
                unsigned int iGray = 0.3 * iR + 0.4 * iG + 0.2 * iB;
                pData = pData = pData = (unsigned char)iGray;
            }
        }

        cocos2d::Texture2D *texture = new cocos2d::Texture2D;
        texture->initWithImage(finalImage);
        cocos2d::Sprite* newSprite = cocos2d::Sprite::createWithTexture(texture);
        delete finalImage;
        texture->release();

        //setRealContentSize(newSprite, _scaleMode);
        return newSprite;
    }
}
```

</p

这个方法创建的图,直接就不显示,根本什么都没有
有没有高手帮忙看看啊

还有一个对象,如何整体灰化?

你想说你只有一张图片A,
但是想实现MyMenuItemImage::create(A,灰化A,XXXXX);??
我想到最简单的方式是自己建一个类,把A灰化之后成B
然后把创建好的return回来

灰度?直接改了这图片的color3B

找到方法了

http://cn.cocos2d-x.org/tutorial/show?id=1976