3.0版本的功能很强大,相对以前的版本改动也很大。现在来体验下3.0版本的。这里主要记录在学习中碰到的各种问题。体验版本:cocos2d-x-3.0beta2
特别说明:这个学习的过程主要是参照了 “阿修罗道” 同学博客中类容,博客地址:http://blog.youkuaiyun.com/fansongy ,也在此对 “阿修罗道” 同学的分享表示感谢!
这个教程也是写给刚接触cocos2d-x的新手同学互相探讨学习的,老鸟们,可以忽略!
1:创建项目
现在创建项目比以前方便多了 ,在 /tools/project-creator/create_project.py目录下,直接双击creatte_project.py就可以弹出对话框,这样的界面操作比之前的敲命令方便很多,而且项目位置是可以随便定义的,这个比老版本的也方便很多。选好开发语言,“create” OK,搞定了项目新建,多简单 。
2:运行新建项目
新建项目完成后,找到自己新建项目的目录(如下左图),文件清晰明了。打开用vs2012打开proj.win32中的工程, 打开后看到,整个工程项目很少,很多东西都没有了(如下中图)。
OK, 现在我要用到“阿修罗道" 博文中说的 触屏事件中的:TouchEvent响应,具体代码参见( http://blog.youkuaiyun.com/fansongy/article/details/12716671 )。修改好代码后,编译出错。
问题1:
解答:这个问题是因为没有引用到gui文件和库,所以在解决方案右键添加现有项,然后找到cocos/gui/proj.win32目录下工程,添加进去,然后在右侧的解决方案中可以看到多了一个项目。
再试着编译,还是一样报错。虽然添加进去了,但是还没有引用,所以下面接着选中 “MyGame”项 右键-->“引用”-->通用属性-->添加新引用,勾选guilib 最后确定,事情搞定。
再继续编译,唉。。有出现新的问题。libGUI.lib(UIButton.obj) : error LNK2019: 无法解析的外部符号 "public: static class cocos2d::extension::Scale9Sprite * __cdecl cocos2d::extension::Scale9Sprite::create(void)" (?create@Scale9Sprite@extension@cocos2d@@SAPAV123@XZ),该符号在函数 "public: virtual void __thiscall cocos2d::gui::Button::setScale9Enabled(bool)" (?setScale9Enabled@Button@gui@cocos2d@@UAEX_N@Z) 中被引用 。同上步骤,添加cocos2d\extensions\proj.win32目录下的的工程项,并引用。在编译,没问题了。一切搞定,可以运行。
问题2 通过build_native.py编译Android版本的时候出错。
错误 1:
In file included from jni/../../Classes/AppDelegate.cpp:2:0: jni/../../Classes/HelloWorldScene.h:5:26: fatal error: gui/CocosGUI.h: No such f ile or directory
错误 2:
proj.android\../cocos2d/cocos/2d/../base/CCConsole.h:119:5: error: 'thread' in namespace 'std' does not name a type
........
错误1 的解决方法:到MyGame\proj.android\jni文件修改.mk文件,如下图,其中要注意的是,$(call import-module,gui) 这句要放在$(call import-module,2d)前面。
错误2 的解决方法:如果出现这个问题是NDK版本低了,换成android-ndk-r9版本的NDK就OK了。
好了,最终在Eclips上编译也通过,但是运行不起来,这个时候将
cocos2d-x-3.0beta2\cocos\2d\platform\android\java\src的平台相关的java文件拷贝到自己项目中的proj.android\src\org\cocos2dx\lib去就可以了。上手机运行起来了。