Как установить цвет фона слоя в cocos2d-x?

Я пишу игру, используя cocos2d-x, и столкнулся с проблемой с изменением цвета фона. Я нашел пример в cocos2d, но, по-видимому, это относится только к cocos2d, который написан в Obj-c. В основном идея состоит в том, чтобы использовать CCLayerColor вместо CCLayer, а когда конструктор запускается, установите цвет.

Кто-нибудь знает, как изменить цвет фона в cocos2d-x? Похоже, это было бы довольно просто, я вполне уверен, что мне не хватает чего-то очевидного.

Ответ 1

2.X или ниже

Расширить CCLayerColor вместо CCLayer. Например,

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

Инициализируйте с помощью этого кода:

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

Если вы хотите изменить фон, используйте setColor метод из CCLayerColor. Например,

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

3.0 или выше

Измените код выше:

Заголовочный файл (.h)

class CommonScene : public cocos2d::LayerColor

Исходный файл (.cpp)

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

Ответ 2

Для Cocos2d-x v3.0

В *.h

class PlayScene : public cocos2d::LayerColor

В *.cpp

bool PlayScene::init()
{
    if ( !LayerColor::initWithColor(Color4B(255, 255, 255, 255) )) {
        return false;
    }

    return true;
}

Ответ 3

Самый простой способ найти, что не влияет на производительность, - это просто:

glClearColor(1.0,1.0,1.0,1.0);

Где-то в вашей функции Scene init(). Таким образом, вам не нужно менять LayerColor, и на производительность также не влияет. Ура!

Ответ 4

В cocos2d-x v.3.x вы можете добавить LayerColor внутри метода init, например:

auto bg = cocos2d::LayerColor::create(Color4B(53, 53, 53, 255));
this->addChild(bg);