如何在cocos2d-x中设置图层的背景颜色?

Edw*_*ard 14 c++ cocos2d-iphone cclayer cocos2d-x

我一直在使用cocos2d-x编写游戏,并遇到了改变背景颜色的问题.我在cocos2d中找到了一个例子,但显然这仅适用于用Obj-c编写的cocos2d.基本上这个想法是使用CCLayerColor而不是CCLayer,当构造函数被触发时设置颜色.

有谁知道如何更改cocos2d-x中的背景颜色?看起来很简单,我很确定我错过了一些明显的东西.

Jin*_*Heo 33

2.X或以下

延伸CCLayerColor而不是CCLayer.例如,

class CommonScene : public cocos2d::CCLayerColor
{
public:
...
}
Run Code Online (Sandbox Code Playgroud)

使用以下代码初始化:

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

如果要更改背景,请使用setColor方法CCLayerColor.例如,

this->setColor(ccc3(255, 255, 255));
Run Code Online (Sandbox Code Playgroud)

3.0或以上

像这样修改上面的代码:

头文件(.h)

class CommonScene : public cocos2d::LayerColor
Run Code Online (Sandbox Code Playgroud)

源文件(.cpp)

if( !LayerColor::initWithColor(Color4B(255,255,255,255)) )
Run Code Online (Sandbox Code Playgroud)


sup*_*rm0 10

在cocos2d-x v.3.x中,您可以在init方法中添加一个LayerColor,如下所示:

auto bg = cocos2d::LayerColor::create(Color4B(53, 53, 53, 255));
this->addChild(bg);
Run Code Online (Sandbox Code Playgroud)


eks*_*pto 8

我找到的最简单的方法不会影响性能,只需:

glClearColor(1.0,1.0,1.0,1.0);
Run Code Online (Sandbox Code Playgroud)

在Scene init()函数中的某个地方.这样您就不必更改为LayerColor,性能也不会受到影响.干杯!


Jon*_*Liu 8

对于Cocos2d-x v3.0

在*.h

class PlayScene : public cocos2d::LayerColor
Run Code Online (Sandbox Code Playgroud)

在*.cpp

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

    return true;
}
Run Code Online (Sandbox Code Playgroud)