選擇了Idea來當做IDE
餘下的便是針對這個IDE進行一些定製
使我們的工程可以更加順暢的進行
1. 採用標準的jsDoc
Idea的js提示不僅僅只是侷限於語法層面的
JsDoc也可以被輔助進提示系統中去
所以對jsDoc的瞭解有助於加強代碼提示與語法檢查大大減少我們不必要的調試
參考的資料 http://usejsdoc.org/ (E)
2. 導入cocos2dx-html
搭建工程之初採用了jsb的代碼來做cocos2dx代碼的提示
但是效果十分差相當多的信息不能正確展示
最典型的錯誤便是參數無法提示
因爲jsb中的所有代碼結構都是xxx:function(){}
導致只能讀取C++代碼的提示當做jsDoc來處理
由於cocos2dx的JS綁定並不是100%還原c++的
有一部分的名字被改寫了(ex. cc.FileUtils.getInstance().getStringFromFile)
有一部分的方法是重載的需要體現多種形式(ex. cc.LabelTTF.create)
這也就是爲什麼我們必須要在啓動前引入jsb.js的原因
然而對於社區來說他們希望以後js的代碼可以無縫兼容js-bind與html兩端
所以雖然是兩個框架但是互通的地方很多
準確的說整體上是js-bind是html的超集
3. win32調試環境
實際上不管是用什麼IDE
調試環境的確定纔是最關鍵的
由於是windows系統下開發所以與mac相關的方案就不考慮了
至於iOS的發佈部分之後會採用Hudson進行部署
android的發佈可以在eclipse下進行(http://developer.android.com/sdk/index.html 官方的adt中包含了一個打包完整的Eclipse)
win32平臺的版本可以採用vs進行(vs速成版本是免費的而且已經夠用了)
android版本的優點是可以發佈到真機測試
在做性能測試以及qa測試時必須要用真機否則會有嚴重的誤差
而且由於最終需要進行平臺接入所以真機測試時必須的
缺點是速度慢(傳輸apk與打包apk本身都慢)logcat不友好
而且最重要的是需要真機(推薦一個模擬器http://www.bluestacks.com/)人手一臺而且要統一不現實
win32平臺
優點是相當快
缺點是很多手機上的操作無法模擬而且速度快到了讓你忘記要優化
這個錯覺也很需要注意
所以最終方案確定爲
開發時團隊人員以win32版本爲主
調試測試階段(非開發人員)以android版本爲主
相關版本都採用Hudson管理持續集成
4.win32環境的補充
使用後有幾個不滿意的小地方
4.1 log有空行
所有的log多了一個空行這個是由於代碼在綁定的時候無條件補充了一個\n導致的
對於安卓版本來說沒事(因爲logcat不顯示)
對此忠於不改變源代碼的方式在導入完自定義框架的綁定代碼後我們重新定義cc.log將多餘的\n去掉
void register_all_jsb_customs(JSContext* cx, JSObject* global){ JS_DefineFunction(cx, global, "log", _cy_log, 0, JSPROP_READONLY | JSPROP_PERMANENT); }
其中_cy_log可以完全複製ScriptingCore::log的代碼,注意一下名字別衝突了就行
4.2 必須要有vs才能顯示log
實際上logcat也有這個問題但是畢竟idea和eclipse都有logcat插件反而不是什麼問題了
但是人手一份vs+idea就不方便了
在此參考了quick-cocos2d-x(https://github.com/dualface/quick-cocos2d-x/issues/51)的開發方案獨立出了控制檯來顯示log
在vs的項目屬性中添加預處理(配置屬性 -> C/C++ -> 預處理器 -> 預處理器定義)USE_WIN32_CONSOLE即可
但是還是有不足的地方就是窗口過小
當內容多了以後還會有一閃而過的情況
4.2.1 修改註冊
通過更改註冊表可以實現定製默認的控制檯窗口尺寸與緩衝區大小
http://unmi.cc/save-windows-command-size (C)
4.2.2 修改代碼
通過在初始化的代碼中增加對控制檯的調整保證沒有導入/修改註冊表的同學也ok
調整main.cpp的代碼
#ifdef USE_WIN32_CONSOLE AllocConsole(); freopen("CONIN$", "r", stdin); freopen("CONOUT$", "w", stdout); freopen("CONOUT$", "w", stderr); // 初始化一下控制檯的尺寸 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD size={160,9999}; SetConsoleScreenBufferSize(hOut,size); SMALL_RECT r; r.Left = 0; r.Top = 0; r.Right = 160; r.Bottom = 50; SetConsoleWindowInfo( hOut, TRUE, &r ); #endif
以上的相關參數適合在擁有19"屏幕的情況下
4.2.3 複製log
最簡單的方案是在標題欄單擊右鍵菜單中有全選然後再窗口內單擊右鍵便是複製(不是按Ctrl+C)
或者自行拖拽選中部分log
切記選中任何log都會導致窗口的假死所以使用時要切記這點