學習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) {
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;
}
}
修改完畢,給vs 2010安裝工程模板,雙擊G:\cocos2d-x目錄下的install-templates-msvc.bat文件,會執行一些bat處理命令,windows 7環境中途會出現一寫權限控制的對話框,選擇Y即可,這樣以後每次cocos2d-x版本升級,我們直接替換G:\cocos2d-x目錄下的文件,並重新編譯即可。
在這裏運行install-templates-msvc.bat可能會出現一閃而過的情況,用記事本打開install-templates-msvc.bat,在最後添加上截停語句(如圖):
哈! 這次這個批處理文件(.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目錄下)。此時再次生成解決方案並運行: