从面试开始_场景带参初始化
来源:互联网 发布:php软件指的是什么 编辑:程序博客网 时间:2024/05/18 19:40
下周一面试。激动紧张忐忑不安。真心希望有人可以收留。
场景和层带参初始化
问:如何实现场景/层的带参初始化?
答:手动实现createScene,create方法。
Class GameLayer:public Layer{public: static Scene* createScene(); CREATE_FUNC(GameLayer); virtual bool init(); static Scene* createSceneWithData(int data); static GameLayer* createWithData(int data); bool initWithData(int data);}//无参的createScenestatic Scene* createScene(){ Scene* scene=Scene::create(); Layer* layer=GameLayer::create(); Scene->addChild(layer); return scene;} //来看一下cocos中create的实现#define CREATE_FUNC(__TYPE__) \static __TYPE__* create() \{ \ __TYPE__ *pRet = new(std::nothrow) __TYPE__(); \ if (pRet && pRet->init()) \ { \ pRet->autorelease(); \ return pRet; \ } \ else \ { \ delete pRet; \ pRet = nullptr; \ return nullptr; \ } \}//无参initbool init(){ if(!Layer::init()) { return false; } return true;}//有参的createScenestatic Scene* createSceneWithData(int data){ Scene* scene=Scene::create(); Layer* layer=GameLayer::createWithData(data); Scene->addChild(layer); return scene;}/*因为需要将参数传递到初始化函数中,所以不能直接使用CREATE_FUNC创建的create函数,我们需要自己手动编写一个create函数。*///编写create可以根据CREATE_FUNC来写GameLayer* createWithData(int data){ GameLayer* layer=new GameLayer(); if(layer&&layer->initWithData(data))//此处将参数传递给自己实现的init中 { layer->autorelease();//将其加入自动释放池中,由系统管理 retuen layer; } delete layer; layer=nullptr; retuen nullptr;}//带参的initbool initWithData(int data){ if(!Lyaer::init()) { return false; } retuen true;}//这样就实现了带参数的初始化//若是此层需要实现单例怎么办?Class GameLayer:public Layer{public: static Scene* createSceneWithData(int data); static GameLayer* createWithData(int data); bool initWithData(int data); sataic GameLayer* getInstance();private: static GameLayer* instance;}//单例初始化在类外GameLayer* GameLayer::instance=nullptr;//获取单例GameLayer* getInstance(){ if(nullptr==instance) { instance=GameLayer::create(); } return instance;}//无参的createScenestatic Scene* createScene(){ Scene* scene=Scene::create(); Layer* layer=GameLayer::getInstance(); Scene->addChild(layer); return scene;}
0 0
- 从面试开始_场景带参初始化
- 从面试开始_面试常见一些零散的问题
- 态度_面试从你进门就开始
- 从面试开始_我讨厌的排序
- 从面试开始_数组的反转&字符串转数字
- 从C开始_结构体_初始化和对成员的访问
- 从拼图游戏开始(二)_带优先搜索的地图路线搜索java实现
- 从面试题目开始(1)
- 从面试题目开始(2)
- 从面试题目开始(3)
- 从面试题目开始(4)
- 从面试题目开始(5)
- 从C开始_结构体_
- 从面试开始_Cocos2DX面试常见问题
- x86从 start_kernel 开始的中断初始化
- 黑马程序员_从选择黑马开始
- MATLAB帮助文档_从这里开始
- 从拼图游戏开始(八)_功能完善
- springMVC笔记系列(23)——拦截器及其在乱码问题和登录问题的应用实现
- 有元函数自我总结
- 锋利的jquery初体验--折叠菜单练习
- 蓝桥杯基础 字母图形
- 字符串之数组中两个字符串的最小距离
- 从面试开始_场景带参初始化
- NYOJ笨小熊
- 什么是数组名?----一个让你吃惊的事实!
- 五的倍数
- .net Core 自我学习随笔(三)——我们整个数据库如何?
- POJ 2528 Mayor's posters
- 内核裁剪步骤
- Session保存到Memcache中,解决读取数据慢问题
- 智能指针使用注意事项