cocos2d_x 问题汇总
1.生成so文件时,报“No rule to make target ”错误
解决方法:将.\xxx[appname]\proj.android\obj\local\armeabi\objs中的文件全部删除即可
2.生成so文件时,报"multiple definition"错误
解决方法:检查Andriod.mk文件是否写了多遍同一个cpp文件
3.cocos2d_x 多线程头文件路径
在cocos2dx pthread.h的位置是在 include“pthread/pthread.h”这样再win32下的确可以编译但是要交叉编译到安卓的时候就出错了,原因是linux自带pthread但是路径pthread/pthread.h 找不到。
4.Andriod 联网模块连不上网
解决方法:在AndroidManifest.xml文件中添加网络权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>
5.移植屏幕自适应
解决方法:在方法bool AppDelegate::applicationDidFinishLaunching()中添加
pEGLView->setDesignResolutionSize(800, 480, kResolutionExactFit);
800x400表示实际背景图片的大小
6.在进行Cocos2d-x开发Android游戏的时候,经常会遇到的一个问题就是返回键和菜单键的处理!
解决方法:
1.在layer中调用:
- setKeypadEnabled(true);
2.在layer中重写以下两个方法:
- virtual void keyMenuClicked();
- virtual void keyBackClicked();
7.cocos2dx API文档 http://www.cocos2d-x.org/wiki/Reference
8.cocos2d-x 字体描边CCRenderTexture glBlendFunc
http://blog.sina.com.cn/s/blog_a502f1a30101hvh7.html
9.Jni完整教程
http://jiangwenfeng762.iteye.com/blog/1500131
10.Andriod相关内容
http://secyaher.blog.163.com/blog/static/3895577201111275423382/
11.在Andriod线程中,使用handler句柄报错
必须添加Looper.prepare Looper.loop
12.Andrord sd文件存储
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> FILE *fp = fopen("/mnt/sdcard/xxx.xxx", "rb+"); //此时就可以了,切记根目录前缀:/mnt/sdcard/ 指代sd卡的根目录
13.Tile map 绘制的地图有黑线
在AppDelegate::applicationDidFinishLaunching方法中添加 pDirector->setProjection(kCCDirectorProjection2D); 最后添加即可
14.cocos2d-2.1rc0-x-2.1.2 到 cocos2d-x-2.2.1移植
基本都一样,但proj.android中的main.cpp不一样了,需要注意
15.eclipse 移植cocos2d-x工程 报错: Program "bash" is not found in PATH
1、把cygwin/bin加入系统环境变量Path下
2、右击工程-->properties-->C/C++ Build 确认右边视图选项Build command:ndk-build
3、右击工程-->properties-->C/C++ Build -->ToolChain Edit
确认右边视图的选项:Current toolchain:No Toolchain
Current Builder:Android Builder (如果还是不行,可以换成Gnu Make Builder试试)
16.cocoStudio 的UI编辑器内存泄露,添加代码
GUIReader::shareReader()->purgeGUIReader(); DictionaryHelper::shareHelper()->purgeDictionaryHelper(); ActionManager::shareManager()->purgeActionManager();
17.CCClippingNode 不工作
for iOS: in AppController replace the gl-view creation with: EAGLView *__glView = [EAGLView viewWithFrame: [window bounds] pixelFormat: kEAGLColorFormatRGBA8 depthFormat: GL_DEPTH24_STENCIL8_OES preserveBackbuffer: NO sharegroup: nil multiSampling: NO numberOfSamples: 0]; for Android: in game activity: public Cocos2dxGLSurfaceView onCreateView() { Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this); glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8); return glSurfaceView; }
待续