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

时间:2009-12-23 19:48:48

标签: iphone cocos2d-iphone layer scene

我刚刚阅读了一些cocos2d文档,据我所知,要在图层中添加背景图像,您必须执行以下操作:

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

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

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

}

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

4 个答案:

答案 0 :(得分:25)

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

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

对于一个简单的场景,将背景添加到图层或场景中并没有多大区别。但是,不久之后分层的好处就会出现。

答案 1 :(得分:8)

此外,图层控制绘图顺序(超过任何层间z排序)。

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

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

- 大卫

答案 2 :(得分:4)

场景是黑板,图层是页面...新闻是在页面上写的,但是,如果你想要你可以在板上写。如果你想删除所有新的。

答案 3 :(得分:0)

在cocos2d中,我们可以在任何节点上添加任何节点。但这取决于等级水平。

您可以在场景上添加图层。如果您想要相同的属性或查找您在CCScene上添加的所有图层,可以在CCScene中添加这些图层(如第二种情况)。但如果你想在每一层上都有不同的功能,请将它们添加到CCLayer。

CCLayer用于为某种目的对一组节点/精灵进行分组。例如,你可以在暂停游戏后添加一个包含选项的图层,或者在屏幕上显示som种类的HUD图层以及一些滚动图层(在某些滚动平台游戏中相似)。

最后,您甚至可以在CCScene上进行CCNode,在另一层上进行CCNode,甚至在CCSprite上进行CCNode。 但是在cocos2d中绘制图形上下文的顺序不同。

希望你能有所作为。

祝你好运!