2009-12-23 146 views
25

我刚刚读完一些cocos2d的文档,而据我了解一个背景图片添加到你必须做一些像层:Cocos2d为图层添加背景图片?

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

Allthough至于我的测试中去,你可以只直接精灵加入到这样的情景:

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

}

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

+0

请记住,Sprite从此成为CCSprite。是的,忍受那种想法丹亚尔。 – 2011-10-26 05:57:00

回答

25

你不需要有图层,但它们很方便。将这些图层视为分组精灵(视觉和组织方式)的一种方式。您可能希望将您的背景图片分组为一个图层,并将游戏中的所有敌人作为另一个图层。这可以让你更清楚地处理每一套。例如您可以删除特定图层,而不是查找所有敌人并将其删除。

如果有帮助,可以使用Photoshop中的图层或图形编辑程序进行操作。 cocos2d中的图层工作方式类似。

对于简单的场景,将背景添加到图层或场景中并没有多大区别。但是不需要很长时间,分层的好处就开始了。

+0

谢谢你为我清理它。 – 2009-12-23 21:28:44

8

此外,图层控制绘图顺序(超过和超过任何层间z排序)。例如,我有一个背景层,一个火花层,一个UI层等(简体)。但是这可以让我确定我的用户界面的东西总是高于任何游戏的东西(火花层),并且高于背景。

如果你的游戏只做叠加渲染,绘制顺序并不重要。 :)

- 大卫

4

现场一块黑板,层是一个网页...消息是页面上写道,但是,如果你愿意,你可以在黑板上写字。如果你想擦除所有新的。

0

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

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

CCLayer是为了某种目的而将一组节点/精灵分组的。例如,您可以在暂停游戏后添加包含选项的图层,或者在屏幕上始终在屏幕上显示某种类型的HUD图层以及一些滚动图层(比较某些滚动平台游戏)。

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

希望你有所不同。

祝你好运!