本笔记使用的环境:
先使用windows xp + vs2008进行开发。
在windows xp + eclipse-jee-indigo-SR1 + android-sdk_r16 + android-ndk-r8b下进行android版本的测试。
最后的开发都在windows xp上进行。
ios的编译暂不进行。
一、cocos2d-x的安装及使用
1 、登录http://cn.cocos2d-x.org/下载游戏引擎的源码
2、学习入门文件。先按1.从win32 开始进行练习
按网址http://cn.cocos2d-x.org/resource/上面的第一到七章指示的方法学习入门文章。
3、在学习中遇到以下问题:
1)按window版本的方法,把HelloWord工程建立好以后运行正常。想想把
CCLabelTTF* pLabel = CCLabelTTF::labelWithString("Hello World", "Thonburi", 48);
中的英文改成中文,运行结果,出现乱码。
只好问百度了。最终通过UTF-8编码解决。以后程序中中文的地方,看来都得用utf-8了。
解决方法如下:
inline void WStrToUTF8(std::string& dest, const wstring& src)
{
dest.clear();
for (size_t i = 0; i < src.size(); i++){
wchar_t w = src[i];
if (w <= 0x7f)
dest.push_back((char)w);
else if (w <= 0x7ff){
dest.push_back(0xc0 | ((w >> 6)& 0x1f));
dest.push_back(0x80| (w & 0x3f));
}
else if (w <= 0xffff){
dest.push_back(0xe0 | ((w >> 12)& 0x0f));
dest.push_back(0x80| ((w >> 6) & 0x3f));
dest.push_back(0x80| (w & 0x3f));
}
else if (sizeof(wchar_t) > 2 && w <= 0x10ffff){
dest.push_back(0xf0 | ((w >> 18)& 0x07)); // wchar_t 4-bytes situation
dest.push_back(0x80| ((w >> 12) & 0x3f));
dest.push_back(0x80| ((w >> 6) & 0x3f));
dest.push_back(0x80| (w & 0x3f));
}
else
dest.push_back('?');
}
}
//! simple warpper
inline std::string WStrToUTF8(const std::wstring& str){
std::string result;
WStrToUTF8(result, str);
return result;
}
std::string text = WStrToUTF8(L"你好");
CCLabelTTF* pLabel = CCLabelTTF::labelWithString(text.c_str(), "宋体", 48);
4、如何编译android版本
至此windows版本运行一切正常。既然cocos2d-x是一个跨平台的游戏引擎,那么如何编译成apk呢?折腾了大半夜终于搞好了:
方法过程如下:
1)安装android开发环境(下载并安装eclipse-jee,下载android-sdk),见andriod开发的入门文章
2)下载并安装Cygwin
3)下载并安装android-ndk(我下载的是r8)
4)修改create-android-project.bat设置
set_CYGBIN=C:\cygwin\bin
Cygwin bin的路径
set_ANDROIDTOOLS=D:\android\android-sdk-windows\tools
android sdk tools的路径
set_NDKROOT=D:\android\android-ndk-r5b
ndk的根目录
5)运行create-android-project.bat,输入包名称:com.test.testHelloAndriod,输入项目名称如:testHelloAndriod。然后输入target id(根据窗口里面的提示输入)
成功以后,引擎所在目录的下面会建立一个目录testHelloAndriod。工程已经为你建立好了。
6)工程建立好以后eclipse打开建立工程进行编译。编译过程见NDK编译的专题文章。如:<Eclipse中配置NDK ,运行cocos2d-x >
过程中有几点注意:
a)工程建立好以后需要android\res\drawable-hdpi、android\res\drawable-mdpi、android\res\drawable-ldpi目录下各方一个icon.png把为图标文件。
b)需要配置NDK编译环境
c)Resources目录下的所有内部复制到android\assets目录下,重新编译。
d)需要
打开 cocos2dx/Android.mk
把下面这行
LOCAL_CFLAGS := -DUSE_FILE32API
改成
LOCAL_CFLAGS := -DUSE_FILE32API -DGL_GLEXT_PROTOTYPES=1
7)编译完成以后运行,怎么还是hello world?如何把我刚才的工程编译?
只能手动修改了
a)把Cocos2dSimpleGame\Classes目录中的所有文件复制到
testHelloAndriod\Classes目录下
b)修改testHelloAndriod\android\jni\helloworld\Android.mk中的内容如下(红色为增加部分):
LOCAL_SRC_FILES := main.cpp \
../../../Classes/AppDelegate.cpp \
../../../Classes/HelloWorldScene.cpp \
../../../Classes/GameOverScene.cpp
c)编译运行-失败。原因是不支持中文。HelloWorldScene.cpp中的中文部分改成英文编译运行成功!!!
问题:如何在andriod下支持中文???
d)运行成功以后,发现屏幕怎么倒置了?原因是windows和andriod下的配置还是不一样。方法:在步骤a中AppDelegate.cpp 不替换就可以了。
总结cocos2d-x跨平台的支持性不是太好,好多还需要手工操作。
今天先学习cocos2d-x的基本安装使用问题。
明天对引擎的结构进行学习。