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

15

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

是否有人知道如何在cocos2d-x中更改背景颜色?似乎这应该很简单,我相信我错过了一些明显的东西。

4个回答

33

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;
    }
    ...
}

如果你想改变背景,可以使用CCLayerColorsetColor方法。例如:

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

3.0或以上版本

将上述代码修改为如下形式:

头文件(.h)

class CommonScene : public cocos2d::LayerColor

源文件(.cpp)

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

我也遇到了这个问题。你是怎么解决的?如果我按照这个更改,我会得到下面问题中的错误。http://stackoverflow.com/questions/17587536/not-able-to-change-the-background-of-the-scene-in-cocos2dx-android - Saurabh

10
在cocos2d-x v.3.x中,您可以在init方法中添加一个LayerColor,如下所示:
auto bg = cocos2d::LayerColor::create(Color4B(53, 53, 53, 255));
this->addChild(bg);

通过这种方式,cocos2d-x显示的颜色是错误的。如果我使用LayerColor::create(Color4B(255, 0, 0, 255)),显示的颜色是fb0007而不是ff0000 - TomSawyer

8

适用于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;
}

8
我找到的最简单的方法不会影响性能,只需执行以下操作:
glClearColor(1.0,1.0,1.0,1.0);

在你的场景初始化函数中,可以这样做。这样你就不必改变为LayerColor,而且性能也不会受到影响。干杯!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接