web-dev-qa-db-ja.com

cocos2d-xでレイヤーの背景色を設定するにはどうすればよいですか?

Cocos2d-xを使ってゲームを書いていて、背景色の変更で問題が発生しました。 cocos2dで example を見つけましたが、これはObj-cで書かれたcocos2dにのみ当てはまるようです。基本的には、CCLayerの代わりにCCLayerColorを使用するという考え方であり、コンストラクターが起動されたら色を設定します。

Cocos2d-xの背景色を変更する方法を知っている人はいますか?とてもシンプルなようですが、明らかな何かが欠けていると確信しています。

14
Edward

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)) )
32
Jinbom Heo

Cocos2d-x v.3.xでは、次のようにinitメソッド内にLayerColorを追加できます。

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

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
Jonathan Liu

パフォーマンスに影響を与えない場所を見つける最も簡単な方法は、次のことです。

glClearColor(1.0,1.0,1.0,1.0);

シーンのinit()関数のどこかにあります。このように、LayerColorに変更する必要はなく、パフォーマンスにも影響しません。乾杯!

8
ekscrypto