【问题标题】:Layer vs Scene in Cocos2d for iPhone game developmentCocos2d 中的图层 vs 场景用于 iPhone 游戏开发
【发布时间】:2009-03-05 09:30:23
【问题描述】:

使用 cocos2d 进行 iPhone 游戏开发,我对图层和场景感到困惑。 例如,我的简单游戏有几个“UI 页面”,如主菜单、高分、游戏板等。

那么我应该为每个“UI 页面”使用图层还是场景,为什么?

【问题讨论】:

    标签: iphone cocoa-touch cocos2d-iphone


    【解决方案1】:

    查看SpritesDemo.m/.h,似乎他们正在使用Layer,然后创建新场景,附加图层然后替换导演上的场景

    @interface SpriteDemo : Layer
    @interface SpriteManual : SpriteDemo
    

    然后代码执行以下操作:

    -(void)nextCallback:(id)sender {
      Scene *s = [Scene node];
      [s add: [nextAction() node]];
      [[Director sharedDirector] replaceScene s];
    }
    

    因此,简而言之,您的问题的答案将是“两者”,您使用图层来表示您的实际“UI 页面”,但您将图层附加到新场景并替换导演中的当前场景。

    【讨论】:

    • 你几乎需要重写 CCLayer 函数而不是 CCScene。这样你就完全不需要重写 CCScene 函数了。
    【解决方案2】:

    很简单:

    在这些示例中他们有一个 CCLayer 和一个 +scene 方法,该方法可以创建一个新场景并将图层附加在其上。因为图层不是您命名的“UI 页面”。一个场景就是一个“UI Page”。

    在这两个(场景和图层)上,您都可以添加更多图层作为子图层。 因此,您可以根据需要堆叠任意数量的层。这实际上是启用多点触控的好方法 - 通过为每个对象创建一个图层并在这些图层上启用触控。归根结底,他们的做法是正确的,因此您也应该使用图层并使用 +scene 方法将主图层附加到场景。

    希望这会有所帮助。 对不起我的英语不好。不是本地人。

    【讨论】:

      【解决方案3】:

      除非你得到某种触摸输入,否则你真的不需要使用层(因为它是 Cocos2D 中唯一实现 TouchEventsDelegate 的类)。如果您将他们的代码直接放在没有图层的场景中,这些演示可以正常工作,据我所知,他们这样做只是为了演示其他 Cocos2D 功能(添加子项、设置位置等)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多