2012-08-24 22 views
10

He estado escribiendo un juego usando cocos2d-x y encontré un problema al cambiar el color de fondo. Encontré un example en cocos2d, pero aparentemente esto solo se aplica a cocos2d que está escrito en Obj-c. Básicamente, la idea es usar un CCLayerColor en lugar de CCLayer, y cuando el constructor se dispara establece el color.Cómo establecer el color de fondo de la capa en cocos2d-x?

¿Alguien sabe cómo cambiar el color de fondo en cocos2d-x? Parece que sería bastante simple, estoy bastante seguro de que me falta algo obvio.

Respuesta

29

2.X o por debajo de

Extender CCLayerColor en lugar de CCLayer. Por ejemplo,

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

Inicializar con este código:

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

Si desea cambiar el fondo utilice el método de setColorCCLayerColor. Por ejemplo,

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

3,0 o superior

Modificar por encima de código como este:

Archivo de cabecera (.h)

class CommonScene : public cocos2d::LayerColor 

archivo de origen (.cpp)

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

También me estoy enfrentando este problema. ¿Cómo lo resolvió? Si cambio de acuerdo a esto Recibo un error como en la pregunta siguiente http://stackoverflow.com/questions/17587536/notable-to-change-the-background-of-the-scene-in-cocos2dx-android – Saurabh

+2

no lo hace trabajar con 3.x – Tutankhamen

+0

gracias, ¡actualizado! :) –

7

La forma más sencilla que pude encontrar que no afecta el rendimiento, es simplemente hacer:

glClearColor(1.0,1.0,1.0,1.0); 

En algún lugar de su init Escena() función. De esta forma, no tiene que cambiar a un LayerColor y el rendimiento tampoco se verá afectado. ¡Aclamaciones!

+0

que funcionó para mí gracias –

8

Para Cocos2d-X v3.0

En * .h

class PlayScene : public cocos2d::LayerColor 

En * .cpp

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

    return true; 
} 
6

En cocos2d-x v.3.x, se puede agregar un LayerColor dentro del método init como este:

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

De esta manera, cocos2d-x muestra el color incorrecto.Si uso 'LayerColor :: create (Color4B (255, 0, 0, 255))', el color mostrado es 'fb0007' not' ff0000' – TomSawyer

Cuestiones relacionadas