cocos2d-x学习耗时点备忘之一 —— CCLayer 初始化

来源:互联网 发布:淘宝双查号 编辑:程序博客网 时间:2024/06/11 22:26

 CCLayer初始化时,一般有三个步骤:

1.在继承CCLayer的子类里实现bool init();方法。

2.在继承CCLayer的子类里声明宏LAYER_NODE_FUNC(layer); 此宏的作用主要是实现通用的CCLayer初始化函数的包装。

代码如下:

Cpp代码  收藏代码
  1. #ifndef GAMELEVELLAYER_H_  
  2. #define GAMELEVELLAYER_H_  
  3.   
  4. #include "cocos2d.h"  
  5.   
  6. class GameLevelLayer : public cocos2d::CCLayer  
  7. {  
  8. public:  
  9.     GameLevelLayer();  
  10.     virtual ~GameLevelLayer();  
  11.   
  12.     virtual bool init();  
  13.     // implement the "static node()" method manually  
  14.     LAYER_NODE_FUNC(GameLevelLayer);//宏  
  15.       
  16. };  
  17.   
  18. #endif /* GAMELEVELLAYER_H_ */  

 

Cpp代码  收藏代码
  1. bool GameLevelLayer::init()  
  2. {  
  3.     //////////////////////////////  
  4.     // 1. super init first  
  5.     if ( !CCLayer::init() )  
  6.     {  
  7.         return false;  
  8.     }  
  9.   
  10.     //初始化成功 插入CCSprite等  
  11.   
  12.     return true;  
  13. }  

 

3.调用代码生成CCLayer时,通过node();方法调用。如下代码:

Cpp代码  收藏代码
  1. GameLevelScene* instance = GameLevelScene::node();  
  2.   
  3. GameLevelLayer* gameLevelLayer = GameLevelLayer::node();//通过node()调用  
  4. instance->addChild(gameLevelLayer);  

如果通过初始化函数来调用,比如GameLevelLayer* gameLevelLayer = new GameLevelLayer();也是能够生成CCLayer的,但是init();方法将不会被自动调用了。我就是因为这点,耗了一晚上,故此记录。

 

CCScene初始化流程也是类似的

原创粉丝点击