Cocos2d-xを使ってゲームを書いていて、背景色の変更で問題が発生しました。 cocos2dで example を見つけましたが、これはObj-cで書かれたcocos2dにのみ当てはまるようです。基本的には、CCLayerの代わりにCCLayerColorを使用するという考え方であり、コンストラクターが起動されたら色を設定します。
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;
}
...
}
バックグラウンドを変更する場合は、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)) )
Cocos2d-x v.3.xでは、次のようにinitメソッド内にLayerColorを追加できます。
auto bg = cocos2d::LayerColor::create(Color4B(53, 53, 53, 255));
this->addChild(bg);
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;
}
パフォーマンスに影響を与えない場所を見つける最も簡単な方法は、次のことです。
glClearColor(1.0,1.0,1.0,1.0);
シーンのinit()関数のどこかにあります。このように、LayerColorに変更する必要はなく、パフォーマンスにも影響しません。乾杯!