切换CCLayer的最佳实践,如CCDirector切换器CCScene

时间:2012-12-22 18:10:03

标签: objective-c cocos2d-iphone

有人可以建议或指出如何切换CCLayer的链接,就像

一样
[ [CCDirector sharedDirector] replaceScene: [SomeCustomScene scene] ];

我计划在我的游戏项目中使用CCLayers来管理菜单系统和级别,而不是使用CCScenes。我打算像sharedDirector一样创建一个'SharedLayer'(Singleton)来交换关卡和菜单。

例如:[ [MySharedLayer sharedLayer] replaceLayer: [MyCustomLayer node] ];

有没有更好的方法。请指教

2 个答案:

答案 0 :(得分:0)

使用: CCLayerMultiplex

CCLayerMultiplex 是一个CCLayer,可以复制它的孩子。

特点:

  • 支持一个或多个孩子
  • 一次只有一个孩子会活跃

价:

A) http://www.cocos2d-iphone.org/api-ref/1.0.0/interface_c_c_layer_multiplex.html

b)中 http://books.google.ca/books?id=9CQL8t6Eob0C&pg=PA104&lpg=PA104&dq=CCMultiplexLayer&source=bl&ots=AgsaLtHNyX&sig=vpYxnf4jUeuQHauxmmIuuv6MJzU&hl=en&sa=X&ei=Tn_WUI3jBsmCqgHpo4DYCw&ved=0CE0Q6AEwAw#v=onepage&q=CCMultiplexLayer&f=false

方法:

  - (void) switchTo:(unsigned int) n;

允许您在图层之间切换。

答案 1 :(得分:0)

感谢@ sg7的反馈意见。我觉得设置Singleton CCLayer是交换图层的好方法,就像CCDirector取代场景一样,因为在我的项目中,我打算只有一个场景。如果我试图保持一堆图层进行快速交换,我肯定会采用CCLayerMultiplex路由。

我采取了不同的路线。我使用CCLayer属性(当前)和switchLayer方法创建了一个我的SceneMgr类的Singleton(继承自CCScene)。

//I can now switch layers like this...
//There is a static SceneMgr being used, so only one instance exists
[ [SceneMgr scene].current switchLayer: myNewLayer withAction: fadeIn];