A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wanyiyuan 中级黑马   /  2014-10-3 17:33  /  1139 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. 每次新建一个 ccLayer 都需要 重新写
  2. scene() 方法,这是个多么烦人的事啊,有什么办法可以一劳永逸 ,答案是肯定的,当然有。利用c++的模板类就可以完成。

  3. #define DELETE_IF(p) if(p) delete p;p = NULL;
  4. template <class __T__>
  5. class BLayer:public
  6. cocos2d::CCLayer {
  7. public:
  8.     static cocos2d::CCScene *scene()
  9.     {

  10. cocos2d::CCScene *s = cocos2d::CCScene::create();
  11.         __T__ *layer = new __T__();
  12.         if(layer && layer->init())
  13. {

  14.             s->addChild(layer);
  15.             layer->release();
  16.         }else{
  17.             DELETE_IF(layer);
  18.         }
  19.         return s;
  20.     }
  21. };
  22. 用法:
  23. CCScene *pScene = BLayer<HelloWorld>::scene();
  24. 呵呵是不是绝对简单。
  25. 在看一下 HelloWorld
  26. class HelloWorld : public cocos2d::CCLayer
  27. {
  28. public:
  29.     virtual bool init();

  30. // a selector callback

  31. };
复制代码


1 个回复

倒序浏览
学习了、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马