Как установить цвет фона слоя в 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);