我一直在使用cocos2d-x编写游戏,但在更改背景颜色时遇到了问题。我在cocos2d中找到了一个示例,但显然这仅适用于用Obj-C编写的cocos2d。基本上,想法是使用CCLayerColor而不是CCLayer,在构造函数被触发时设置颜色。
是否有人知道如何在cocos2d-x中更改背景颜色?似乎这应该很简单,我相信我错过了一些明显的东西。
我一直在使用cocos2d-x编写游戏,但在更改背景颜色时遇到了问题。我在cocos2d中找到了一个示例,但显然这仅适用于用Obj-C编写的cocos2d。基本上,想法是使用CCLayerColor而不是CCLayer,在构造函数被触发时设置颜色。
是否有人知道如何在cocos2d-x中更改背景颜色?似乎这应该很简单,我相信我错过了一些明显的东西。
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;
}
...
}
如果你想改变背景,可以使用CCLayerColor
的setColor
方法。例如:
this->setColor(ccc3(255, 255, 255));
3.0或以上版本
将上述代码修改为如下形式:
头文件(.h)
class CommonScene : public cocos2d::LayerColor
源文件(.cpp)
if( !LayerColor::initWithColor(Color4B(255,255,255,255)) )
auto bg = cocos2d::LayerColor::create(Color4B(53, 53, 53, 255));
this->addChild(bg);
LayerColor::create(Color4B(255, 0, 0, 255))
,显示的颜色是fb0007
而不是ff0000
。 - TomSawyer适用于Cocos2d-x v3.0
在*.h文件中:
class PlayScene : public cocos2d::LayerColor
bool PlayScene::init()
{
if ( !LayerColor::initWithColor(Color4B(255, 255, 255, 255) )) {
return false;
}
return true;
}
glClearColor(1.0,1.0,1.0,1.0);
在你的场景初始化函数中,可以这样做。这样你就不必改变为LayerColor,而且性能也不会受到影响。干杯!