代码之家  ›  专栏  ›  技术社区  ›  Oscar Gomez

cocos2d在图层中添加背景图像?

  •  25
  • Oscar Gomez  · 技术社区  · 15 年前

    我刚刚阅读了一些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;
    

    }

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

    4 回复  |  直到 11 年前
        1
  •  25
  •   Colin Gislason    15 年前

    你不需要有一个图层,但是它们很方便。将这些层视为对精灵进行分组的一种方式(从视觉上和组织上)。你可能希望你的背景图像分组为一个层,而游戏中的所有敌人作为另一个层。这使您能够更清晰地处理每一组。例如,你可以移除一个特定的层,而不是找到所有的敌人并移除它们。

    如果有帮助,可以在Photoshop或图形编辑程序中播放图层。cocos2d中的层工作原理类似。

    对于一个简单的场景,将背景添加到一个层或场景中不会有太大的区别。但很快分层的好处就开始了。

        2
  •  8
  •   David Whatley    15 年前

    此外,图层控制绘图顺序(高于任何层间Z顺序)。

    例如,在geospark中,我有一个背景层、一个火花层、一个用户界面层等(简化)。但这允许我确保我的用户界面总是在任何游戏东西(火花层)之上,所有的东西都在背景之上。

    如果你的游戏只是加性渲染,那么绘制顺序就不重要了。:)

    ——戴维

        3
  •  4
  •   Uwe Keim Tomasz    12 年前

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

        4
  •  0
  •   Kumar C    11 年前

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

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

    cclayer用于出于某种目的对一组节点/精灵进行分组。例如,您可以添加一个层,其中包括暂停游戏后的选项,或用于始终在屏幕上显示SOM类的HUD层以及一些滚动层(类似于某些滚动平台游戏)。

    最后,您甚至可以在ccscene上使用ccnode,在另一层上使用层,甚至在ccsprite上使用ccnode。 但是在cocos2d中,图形上下文中的绘制顺序不同。

    希望你能有所不同。

    祝你好运!