How to set background color of layer in cocos2d-x?

c++, cclayer, cocos2d-iphone, cocos2d-x

Solution

2.X or below

Extend `CCLayerColor` instead of `CCLayer`. For example,

class CommonScene : public cocos2d::CCLayerColor
{
public:
...
}

Initialize with this code:

bool CommonScene::init()
{
    //////////////////////////////
    // 1. super init first
    if( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) ) //RGBA
    {
        return false;
    }
    ...
}

If you want to change background use the `setColor` method from `CCLayerColor`. For example,

this->setColor(ccc3(255, 255, 255));

3.0 or above

Modify above code like this:

Header file (.h)

class CommonScene : public cocos2d::LayerColor

Source file (.cpp)

if( !LayerColor::initWithColor(Color4B(255,255,255,255)) )

Problem

I've been writing a game using cocos2d-x and ran into an issue with changing the background color. I found an example in cocos2d, but apparently this only applies to cocos2d which is written in Obj-c. Basically the idea is to use a CCLayerColor instead of CCLayer, and when the constructor gets fired set the color. Does anyone know how to change the background color in cocos2d-x? Seems like it would be pretty simple, I'm pretty sure I'm missing something obvious.

Original source