Cocos2d adding a background image to a layer?

Oscar Gomez picture Oscar Gomez · Dec 23, 2009 · Viewed 30k times · Source

I just finished reading some of the cocos2d documentation, and as far as I understand to add a background image to a layer you have to do something like:

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

Allthough as far as my testing goes you can just directly add the sprite to the scene like this:

@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;

}

What is the difference between this 2 options, and what is the better way to set a background for a layer?. Any help will be greatly appreciated.

Answer

Colin Gislason picture Colin Gislason · Dec 23, 2009

You do not need to have a layer, but they are handy. Think of the layers as a way of grouping sprites (both visually and organizationally). You may want your background images grouped as a layer and all the enemies in a game as another layer. This allows you to deal with each set more cleanly. e.g. You can remove a specific layer instead of finding all of the enemies and removing them.

If it helps, play with layers in Photoshop or a graphics editing program. Layers in cocos2d work similarly.

For a simple scene, adding the background to a layer or to a scene won't make much difference. But it doesn't take long before the benefits of layering kicks in.