2009-12-23 10 views
25

acabo de terminar de leer algunos de los documentos cocos2d, y por lo que yo entiendo que añadir una imagen de fondo en una capa que tiene que hacer algo como:Cocos2d agregando una imagen de fondo a una capa?

Sprite * bg = [Sprite spriteWithFile:@"Background.png"]; 
[layer addChild:bg z:0]; 

Acabase tan lejos como mis pruebas que va sólo puede añadir directamente el sprite a la escena así:

@implementation IntroScene 
- (id) init { 
self = [super init]; 
if (self != nil) { 
    Sprite * bg = [Sprite spriteWithFile:@"Background.png"]; 
    [bg setPosition:ccp(240, 160)]; 
    [self addChild:bg z:0]; 
    [self addChild:[MenuLayer node] z:1]; 
} 
return self; 

}

¿Cuál es la diferencia entre estos 2 opciones, y cuál es la mejor manera de establecer un fondo para una capa ?. Cualquier ayuda será apreciada.

+0

Tenga en cuenta que Sprite se convirtió en CCSprite. Sí, ten esa mente, Danyal. –

Respuesta

25

No es necesario que tenga una capa, pero son útiles. Piense en las capas como una forma de agrupar sprites (tanto visuales como organizativos). Es posible que desee que sus imágenes de fondo se agrupen como una capa y todos los enemigos en un juego como otra capa. Esto le permite tratar cada conjunto más limpiamente. p.ej. Puede eliminar una capa específica en lugar de encontrar todos los enemigos y eliminarlos.

Si ayuda, juegue con capas en Photoshop o un programa de edición de gráficos. Las capas en cocos2d funcionan de manera similar.

Para una escena simple, agregar el fondo a una capa o a una escena no hará mucha diferencia. Pero no pasa mucho tiempo antes de que los beneficios de la estratificación se activen.

+0

Gracias, eso lo aclaró para mí. –

8

También las capas controlan el orden de dibujo (por encima de cualquier ordenamiento entre capas z).

En geoSpark, por ejemplo, tengo una capa de fondo, una capa de chispa, una capa de UI, etc. (Simplificado). Pero esto me permite asegurarme de que mi interfaz de usuario está siempre por encima de cualquier cosa del juego (la capa de chispa) y todo lo que está por encima del fondo.

Si su juego solo hace aditivos, el orden de los sorteos no importará mucho. :)

- David escena

4

es una pizarra, la capa es una página de noticias ... se escribió en la página, pero, si lo desea, puede escribir en la pizarra. Si quieres borrar todo nuevo.

0

En cocos2d podemos agregar cualquier nodo en cualquier nodo. Pero depende del nivel de jerarquía.

Puede agregar Capas en escenas. Si desea la misma propiedad o busca todas las capas que agrega en un CCScene, puede agregarlas en CCScene (como en su segundo caso). pero si desea tener una función diferente en cada capa, agréguelos a CCLayer.

CCLayer está destinado a agrupar un conjunto de nodos/sprites para algún propósito. Por ejemplo, puede agregar una capa que incluya opciones después de pausar un juego, o capa de HUD para mostrar som tipo siempre en la pantalla junto con alguna capa de desplazamiento (como en algunos juegos de plataformas de desplazamiento).

Finalmente, puede incluso CCNode en un CCScene, una capa en otra capa e incluso un CCNode en un CCSprite. Pero el orden de dibujo en el contexto de gráficos en cocos2d es diferente.

Espero que tengas la diferencia.

¡Buena suerte!

Cuestiones relacionadas