- 每次新建一个 ccLayer 都需要 重新写
- scene() 方法,这是个多么烦人的事啊,有什么办法可以一劳永逸 ,答案是肯定的,当然有。利用c++的模板类就可以完成。
- #define DELETE_IF(p) if(p) delete p;p = NULL;
- template <class __T__>
- class BLayer:public
- cocos2d::CCLayer {
- public:
- static cocos2d::CCScene *scene()
- {
- cocos2d::CCScene *s = cocos2d::CCScene::create();
- __T__ *layer = new __T__();
- if(layer && layer->init())
- {
- s->addChild(layer);
- layer->release();
- }else{
- DELETE_IF(layer);
- }
- return s;
- }
- };
- 用法:
- CCScene *pScene = BLayer<HelloWorld>::scene();
- 呵呵是不是绝对简单。
- 在看一下 HelloWorld
- class HelloWorld : public cocos2d::CCLayer
- {
- public:
- virtual bool init();
- // a selector callback
- };
复制代码
|
|