学习cocos2d-x的第一步就是搭建环境,这里用的是 win7 + VS2010 + Cocos2d-x 。
本篇文章是参考网上好多教程,然后通过实践和总结得出的。
1、安装VS2010
先从微软官方下载VisualStudio2010,链接入口:http://www.microsoft.com/zh-cn/download/details.aspx?id=12187。有四个包,下载完成之后解压:
找到setup.exe安装,这里不再详细解释,大家可以参考这篇文章:http://www.cnblogs.com/lhming/archive/2012/06/27/2566442.html
2、安装Cocos2d-x
在这里我用的是cocos2d-2.1beta3-x-2.1.1,可以去官网下载最新版本:http://cocos2d.cocoachina.com/download,下载之后解压到任一路径,我这里选择的路径是G:\cocos2d-x。解压之后如下图:
在win32下编译 cocos2d-x项目
为了生成windows下需要的lib、dll文件,我们需要将解压后的cocos2d-x项目在win32下编译一次,我这里是用的是visual studio 2010.
1、双击cocos2d-win32.vc2010.sln,将整个cocos2d-x项目打开。右击第一行“解决方案”,选择第一行“生成解决方案”。
2、如果一切进行顺利,则会在G:/cocos2d-x出现Debug.win32文件夹,里面的内容有:
3、此时右击project-cpp下的HelloCpp,“调试” -> “启动新实例”,就可以看到下面的效果:
TestCpp是引擎API的实例项目,我们可以从中学习源代码。运行有如下效果:
4、为自己真正创建属于自己的cocos2d-x的win 32项目
首先我们给vs2010安装工程模板,但默认的工程模板里面写的都是相对路径,故我们需要修改下cocos2d-x的vs2010的工程模板,用文本编辑器打开G:\cocos2d-x\template\msvc\CCAppWiz.win32\Scripts\1033目录下的default.js,找到AddConfigurations函数,发现默认配置的包含文件夹路径都是相对路径:
// Additional Inlcude Directories以及:
var strAddIncludeDir = '.;..\\Classes';
strAddIncludeDir += ';$(SolutionDir)cocos2dx';
strAddIncludeDir += ';$(SolutionDir)cocos2dx\\include';
strAddIncludeDir += ';$(SolutionDir)cocos2dx\\kazmath\\include';
strAddIncludeDir += ';$(SolutionDir)cocos2dx\\platform\\win32';
strAddIncludeDir += ';$(SolutionDir)cocos2dx\\platform\\third_party\\win32';
strAddIncludeDir += ';$(SolutionDir)cocos2dx\\platform\\third_party\\win32\\OGLES';
if (wizard.FindSymbol('CC_USE_BOX2D')) {
strAddIncludeDir += ';$(SolutionDir)external';
}
if (wizard.FindSymbol('CC_USE_CHIPMUNK')) {
strAddIncludeDir += ';$(SolutionDir)external\\chipmunk\\include\\chipmunk';
}
if (wizard.FindSymbol('CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE')) {
strAddIncludeDir += ';$(SolutionDir)CocosDenshion\\include';
}
if (wizard.FindSymbol('CC_USE_LUA')) {
strAddIncludeDir += ';$(SolutionDir)scripting\\lua\\cocos2dx_support';
strAddIncludeDir += ';$(SolutionDir)scripting\\lua\\tolua';
strAddIncludeDir += ';$(SolutionDir)scripting\\lua\\lua';
}
function GetTargetName(strName, strProjectName) { try { var strTarget = strName; var nIndex = strName.indexOf("root"); if (nIndex >= 0) { strTarget = strName.substring(0, nIndex) + strProjectName + strName.substring(nIndex + 4, strName.length); } var strTemp = "../../../../../scripting/lua"; nIndex = strTarget.indexOf(strTemp); if (nIndex >= 0) { strTarget = "Classes" + strTarget.substring(nIndex + strTemp.length, strTarget.length); } return strTarget; } catch (e) { throw e; }}
即如果用默认模板安装的话,必须使用自带的解决方案,在此基础上添加工程的方法创建新的项目,但如果我们要经常做很多不关的cocos2d-x项目,这样后面岂不是要在一个解决方案管理或者复制粘贴多次原来的解决方案,这明显是不合理的,所以可以见此脚本中的相对路径的地方都改为我们cocos2d-x源码存放的绝对路径。主要有以下几处:
// Additional Inlcude Directories以及:
var strAddIncludeDir = '.;..\\Classes';
strAddIncludeDir += ';G:\\cocos2d-x\\cocos2dx';
strAddIncludeDir += ';G:\\cocos2d-x\\cocos2dx\\include';
strAddIncludeDir += ';G:\\cocos2d-x\\cocos2dx\\kazmath\\include';
strAddIncludeDir += ';G:\\cocos2d-x\\cocos2dx\\platform\\win32';
strAddIncludeDir += ';G:\\cocos2d-x\\cocos2dx\\platform\\third_party\\win32';
strAddIncludeDir += ';G:\\cocos2d-x\\cocos2dx\\platform\\third_party\\win32\\OGLES';
if (wizard.FindSymbol('CC_USE_BOX2D')) {
strAddIncludeDir += ';G:\\cocos2d-x\\external';
}
if (wizard.FindSymbol('CC_USE_CHIPMUNK')) {
strAddIncludeDir += ';G:\\cocos2d-x\\external\\chipmunk\\include\\chipmunk';
}
if (wizard.FindSymbol('CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE')) {
strAddIncludeDir += ';G:\\cocos2d-x\\CocosDenshion\\include';
}
if (wizard.FindSymbol('CC_USE_LUA')) {
strAddIncludeDir += ';G:\\cocos2d-x\\scripting\\lua\\cocos2dx_support';
strAddIncludeDir += ';G:\\cocos2d-x\\scripting\\lua\\tolua';
strAddIncludeDir += ';G:\\cocos2d-x\\scripting\\lua\\lua';
}
function GetTargetName(strName, strProjectName) {修改完毕,给vs 2010安装工程模板,双击G:\cocos2d-x目录下的install-templates-msvc.bat文件,会执行一些bat处理命令,windows 7环境中途会出现一写权限控制的对话框,选择Y即可,这样以后每次cocos2d-x版本升级,我们直接替换G:\cocos2d-x目录下的文件,并重新编译即可。
try {
var strTarget = strName;
var nIndex = strName.indexOf("root");
if (nIndex >= 0) {
strTarget = strName.substring(0, nIndex) + strProjectName + strName.substring(nIndex + 4, strName.length);
}
var strTemp = "G:/cocos2d-x/scripting/lua"; //修改这里
nIndex = strTarget.indexOf(strTemp);
if (nIndex >= 0) {
strTarget = "Classes" + strTarget.substring(nIndex + strTemp.length, strTarget.length);
}
return strTarget;
}
catch (e) {
throw e;
}
}
在这里运行install-templates-msvc.bat可能会出现一闪而过的情况,用记事本打开install-templates-msvc.bat,在最后添加上截停语句(如图):
可是...检查问题的时候,发现我相应的.js文件全都在.这是什么情况呢?
去网上查了下,原来是.js文件默认打开方式的更改导致的.有很多同仁为了方便查看,会把.js文件用UltraEdit,EditPlus,Dreamwear等软件默认打开,导致.js文件的属性被更改(如图)
我们要做的是在WIN菜单栏里点击"运行",输入 "regedit"打开注册表.在HKEY_CLASSES_ROOT.js位置找到.js,修改"数据"属性为"JSFile"即可.(如图)
修改完了,我们再运行一下install-templates-msvc.bat文件看效果吧。新建->项目:
5、打开vs 2010,新建项目
生成解决方案时会出现以下错误:
即我们没将之前编译cocos2d-x项目生产的Lib包没放到HelloCocos2d项目下,将G:\cocos2d-x\Debug.win32 下所有.lib和dll文件复制到HelloCocos2d\Debug.win32目录下即可(Tips:为了后续再次创建cocos2d-x win32项目都复制这些dll文件到项目路径下,可以将其全部复制到系统的system32目录下)。此时再次生成解决方案并运行: