Ubuntu Cocos2dx 学习笔记——错误总结
来源:互联网 发布:matlab 关联矩阵 编辑:程序博客网 时间:2024/06/06 20:15
转载请表明出处:http://blog.csdn.net/tim_shadow/article/details/23272423
1.添加渐变背景时无任何背景效果
遇到一个很傻的问题,今天在添加一个渐变背景的时候,添加了如下代码,发现运行后没有看到效果
CCLayerGradient*backGradient = CCLayerGradient::create(colorstart,colorend);backGradient->changeWidth(visibleSize.width);backGradient->changeHeight(visibleSize.height);backGradient->setPosition(ccp(visibleSize.width/2,visibleSize.height/2));this->addChild(backGradient,0);结果后来无意中发现,在这段代码前面有一句话
return true;函数都已经返回了,怎么可能执行到,遂把ruturn语句拉到最后,运行成功,CDT与JDT的不同之处体现无疑,CDT这种情况IDE是不会提示错误的。
2.CCMenu::create()导致的不兼容
遇到一个比较特殊的情况,网上搜遍了没有找到原因,状况是:在linux上面能够完整运行,但是导入到Android手机上面的时候确出现闪退,CCLayer的初始代码如下:
bool HelloWorld::init() { if (!CCLayer::init()) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); CCLabelTTF *start = CCLabelTTF::create("Start", "arial", 50); CCLabelTTF *pause = CCLabelTTF::create("Pause", "arial", 50); CCLabelTTF *resume = CCLabelTTF::create("Resume", "arial", 50); start->setColor(randccColor3B()); pause->setColor(randccColor3B()); resume->setColor(randccColor3B()); startMenuItem = CCMenuItemLabel::create(start, this, menu_selector(HelloWorld::startGame)); pauseMenuItem = CCMenuItemLabel::create(pause, this, menu_selector(HelloWorld::pauseGame)); resumeMenuItem = CCMenuItemLabel::create(resume, this, menu_selector(HelloWorld::resumeGame)); startMenuItem->setPosition(ccp(0.0,40.0)); resumeMenuItem->setPosition(ccp(0.0,0.0)); pauseMenuItem->setPosition(ccp(0.0,0.0)); resumeMenuItem->setVisible(false); CCMenu* menu = CCMenu::create(startMenuItem, pauseMenuItem, resumeMenuItem); menu->setPosition( ccp(origin.x + visibleSize.width / 2,origin.y + visibleSize.height / 2)); this->addChild(menu, 1); // CCMenu *menu1 = CCMenu::create(startMenuItem, NULL);// CCMenu *menu2 = CCMenu::create(pauseMenuItem, NULL);// CCMenu *menu3 = CCMenu::create(resumeMenuItem, NULL);// menu1->setPosition(// ccp(origin.x + visibleSize.width / 2,origin.y + visibleSize.height / 2));// this->addChild(menu1, 1);// menu2->setPosition(// ccp(origin.x + visibleSize.width / 2,origin.y + visibleSize.height / 2));// this->addChild(menu2, 1);// menu3->setPosition(// ccp(origin.x + visibleSize.width / 2,origin.y + visibleSize.height / 2));// this->addChild(menu3, 1); ccColor4B colorstart = randccColor4B(); ccColor4B colorend = randccColor4B(); CCLayerGradient*backGradient = CCLayerGradient::create(colorstart, colorend, ccp(50,100)); backGradient->changeWidth(visibleSize.width); backGradient->changeHeight(visibleSize.height); backGradient->setPosition(ccp(0,0)); this->addChild(backGradient, 0); return true;}注意到30-33行代码,如果这样写,那么在linux能够运行,而在Android 上面不能运行;
如果将30-33行的代码注释掉,并去掉35-46行的注释,那么在Linux 和Android 上面都能够运行了同时,如果将 35-37行代码改为:
CCMenu *menu1 = CCMenu::create(startMenuItem);CCMenu *menu2 = CCMenu::create(pauseMenuItem);CCMenu *menu3 = CCMenu::create(resumeMenuItem);那么在Linux上面会闪退,但是Android 上面能够正常运行
猜想:
出现此种情况,猜想可能是由于CCMenu::create()方法多参数的特殊性,Linux和Android的处理方式不一样。
所以以后遇到这种类似的多参数方法一定要引起重视。
所以以后遇到这种类似的多参数方法一定要引起重视。
正确方式:
多个参数时需要在最后加上NULL表示结束,如:
CCMenu *menu1 = CCMenu::create(startMenuItem, NULL);
CCMenu *menu = CCMenu::create(startMenuItem0, startMenuItem1,startMenuItem2, NULL);
0 0
- Ubuntu Cocos2dx 学习笔记——错误总结
- Ubuntu Cocos2dx 学习笔记——Cocos2dx设计模式
- Ubuntu Cocos2dx 学习笔记0331——创建项目
- Ubuntu Cocos2dx 学习笔记——纹理动画
- Ubuntu Cocos2dx 学习笔记——自定义动画
- Ubuntu Cocos2dx 学习笔记——使用Git管理本地代码
- Ubuntu Cocos2dx 学习笔记——添加Box2d物理游戏引擎
- 【cocos2dx】cocos2dx学习笔记
- cocos2dx 错误笔记01
- Cocos2dx — (二) 笔记
- cocos2dx学习笔记(三)——动作(CCAction)
- Cocos2dx学习笔记《15》—— New Label
- Cocos2dx学习笔记(1)——认识HelloWorld
- Cocos2dx学习笔记(2)——精灵的创建
- Cocos2dx学习笔记(3)——锚点
- Cocos2dx学习笔记(4)——Z轴
- Cocos2dx学习总结一
- ruby on rails学习笔记——Ubuntu下sudo apt-get update错误解决
- --------------------【Android】跑马灯效果(文字滚动)
- 枚举进程的方法
- 二进制输出整数
- Struts2加载外部jar包
- java WEB开发:过滤器、监听器、拦截器的区别
- Ubuntu Cocos2dx 学习笔记——错误总结
- Spring中数据库连接池的三种配置(dbcp,c3p0,proxool)(转载)
- linux下/var/run目录下的pid文件作用
- java NIO —— 缓冲区
- Introduction to Oracle VM server for SPARC
- 各大公司笔试面试题之数据结构与算法
- CRON表达式详解与案例
- KanKan甄选,BaseAdapter我要对你说,ViewHolder你懂得,性能优化必读
- Unity手稿