2012-08-24 14 views
10

Piszę grę przy użyciu cocos2d-x i napotkałem problem ze zmianą koloru tła. Znalazłem example w cocos2d, ale najwyraźniej dotyczy to tylko cocos2d, który jest napisany w Obj-c. Zasadniczo chodzi o to, aby użyć CCLayerColor zamiast CCLayer, a gdy konstruktor zostanie uruchomiony, ustaw kolor.Jak ustawić kolor tła warstwy w cocos2d-x?

Czy ktoś wie, jak zmienić kolor tła w cocos2d-x? Wydaje się, że byłoby to całkiem proste, jestem prawie pewna, że ​​brakuje mi czegoś oczywistego.

Odpowiedz

29

2.x lub poniżej

Wydłuż CCLayerColor zamiast CCLayer. Na przykład,

class CommonScene : public cocos2d::CCLayerColor 
{ 
public: 
... 
} 

Initialize z tym kodem:

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

Jeśli chcesz zmienić tło użyć metody z CCLayerColorsetColor. Na przykład,

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

3,0 lub powyżej

Modyfikacja powyżej kodu:

nagłówka pliku (.h)

class CommonScene : public cocos2d::LayerColor 

plik źródłowy (.cpp)

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

Mam również do czynienia z tym problemem. Jak to rozwiązałeś? Jeśli zmienię zgodnie z tym. Otrzymuję błąd, ponieważ w poniższym pytaniu http://stackoverflow.com/questions/17587536/notable-to-change-the-background-of-the-scene-in-cocos2dx-android – Saurabh

+2

to nie pracować z 3.x – Tutankhamen

+0

dzięki, aktualizowane! :) –

7

Najprostszym sposobem mogłem zlokalizować, że nie ma wpływu na wydajność, to po prostu zrobić:

glClearColor(1.0,1.0,1.0,1.0); 

gdzieś w scenie init(). W ten sposób nie trzeba zmieniać kolorów warstwy i nie ma to wpływu na wydajność. Twoje zdrowie!

+0

który pracował dla mnie dzięki –

8

Dla Cocos2d-x v3.0

W * .h

class PlayScene : public cocos2d::LayerColor 

W * .cpp

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

    return true; 
} 
6

W cocos2d-x v.3.x, ty można dodać LayerColor wewnątrz metody init w ten sposób:

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

W ten sposób cocos2d-x wyświetla niewłaściwy kolor.Jeśli używam 'LayerColor :: create (Color4B (255, 0, 0, 255)), wyświetlany kolor to' fb0007', a nie 'ff0000' – TomSawyer