【发布时间】:2009-03-05 09:30:23
【问题描述】:
使用 cocos2d 进行 iPhone 游戏开发,我对图层和场景感到困惑。 例如,我的简单游戏有几个“UI 页面”,如主菜单、高分、游戏板等。
那么我应该为每个“UI 页面”使用图层还是场景,为什么?
【问题讨论】:
标签: iphone cocoa-touch cocos2d-iphone
使用 cocos2d 进行 iPhone 游戏开发,我对图层和场景感到困惑。 例如,我的简单游戏有几个“UI 页面”,如主菜单、高分、游戏板等。
那么我应该为每个“UI 页面”使用图层还是场景,为什么?
【问题讨论】:
标签: iphone cocoa-touch cocos2d-iphone
查看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 和一个 +scene 方法,该方法可以创建一个新场景并将图层附加在其上。因为图层不是您命名的“UI 页面”。一个场景就是一个“UI Page”。
在这两个(场景和图层)上,您都可以添加更多图层作为子图层。 因此,您可以根据需要堆叠任意数量的层。这实际上是启用多点触控的好方法 - 通过为每个对象创建一个图层并在这些图层上启用触控。归根结底,他们的做法是正确的,因此您也应该使用图层并使用 +scene 方法将主图层附加到场景。
希望这会有所帮助。 对不起我的英语不好。不是本地人。
【讨论】:
除非你得到某种触摸输入,否则你真的不需要使用层(因为它是 Cocos2D 中唯一实现 TouchEventsDelegate 的类)。如果您将他们的代码直接放在没有图层的场景中,这些演示可以正常工作,据我所知,他们这样做只是为了演示其他 Cocos2D 功能(添加子项、设置位置等)。
【讨论】: