Cocos2d将背景图像添加到图层?

Osc*_*mez 25 iphone layer cocos2d-iphone scene

我刚读完了一些cocos2d文档,据我所知,要在图层中添加背景图像,你必须做以下事情:

Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
[layer addChild:bg z:0];
Run Code Online (Sandbox Code Playgroud)

尽管我的测试结果是你可以直接将精灵添加到场景中,如下所示:

@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;
Run Code Online (Sandbox Code Playgroud)

}

这两个选项之间的区别是什么,以及为图层设置背景的更好方法是什么?任何帮助将不胜感激.

Col*_*son 25

您不需要有图层,但它们很方便.将层视为分组精灵(视觉和组织)的一种方式.您可能希望将背景图像分组为图层,将游戏中的所有敌人分组为另一层.这使您可以更干净地处理每一组.例如,您可以移除特定图层,而不是找到所有敌人并移除它们.

如果它有帮助,可以在Photoshop或图形编辑程序中使用图层.cocos2d中的图层类似.

对于一个简单的场景,将背景添加到图层或场景不会产生太大的影响.但是,不久之后分层的好处就开始了.


Dav*_*ley 8

层也控制绘制顺序(超过任何层间z排序).

例如,在geoSpark中,我有一个背景图层,一个火花图层,一个UI图层等(简化版).但这让我可以确保我的UI内容始终高于任何游戏内容(火花层)以及所有高于背景的内容.

如果你的游戏只进行附加渲染,那么绘制顺序并不重要.:)

- 大卫