說是原創,其實還是看了網上各種教程。主要看的是這篇:
但也整了好幾天,有的是因為自己沒有看清楚,有的是環境出了問題或者版本可能不一致吧。我用的cocos2dx-js 3.3版本。在此記錄一下,希望能給需要的人一些幫助。因為剛開始,自己好多概念性的東西也沒有搞明白,只是在js能調到c++**了。
這個文件的目的是展示一下怎樣把乙個自定義的cpp類繫結到js runtime。**不涉及jsbinding的細節**。
首先寫乙個c++類
utils.h
#include "cocos2d.h"
namespace cocos2d ;
} //namespace cocos2d
utils.cpp
#include "utils.h"
using_ns_cc;
utils::utils()
utils::~utils()
bool utils::init()
std::string utils::hellomsg()
這兩個c++檔案,放在 /frameworks/js-bindings/cocos2d-x/cocos/my目錄下,(這裡是在cocos目錄下建立了my目錄的)
然後把這個my連同utils.h utils.cpp檔案加到cocos2d_libs.xcodeproj專案裡,如下圖所示:
一定要注意別加錯工程了。
然後在cocos2d_js_bindings.xcodeproj工程裡新增原始檔路徑,如下圖所示:
重要的事情在強調一遍,一定要看清楚是在哪個工程下邊加的。當初吃了虧啊。
然後這裡提前在專案工程的搜尋路徑中新增繫結檔案的路徑,如下圖所示:
其實我們這裡生成的繫結檔案就是在auto裡。
那麼我們現在來生成繫結檔案:
在專案下的 /tools/tojs路徑下新增cocos2dx_utils.ini檔案
然後修改tools/tojs/genbindings.py檔案,新增最後一行。
cmd_args =
然後執行 tools/tojs/genbindings.py, python genbindings.py命令。之前命令用錯了還是少環境的,一頓折騰。
執行完命令之後,就會在/js-bindings/cocos2d-x/plugin/jsbindings/auto目錄下生成jsb_cocos2dx_utils_auto.hpp jsb_cocos2dx_utils_auto.cpp檔案。
然後把這倆檔案新增到cocos2d_js_bindings.xcodeproj工程下邊。
新增到工程下邊,是指的,在工程target下對應的build phases下邊能看到
看清是加到哪個工程下邊了。
然後就是註冊到js
可以看到jsb_cocos2dx_utils_auto.hpp下有方法register_all_cocos2dx_utils,
#include "jsb_cocos2dx_utils_auto.hpp"
sc->addregistercallback(register_all_cocos2dx_utils);
就齊活了。
編譯之後,接下來就是在js裡呼叫了:
var utilsclass = cc.utils.create();
var msg = utilsclass.hellomsg();
cc.log("utilsclass's msg is : "+msg);
可以看到輸出:
js: utilsclass's msg is : hello from utils:sayhello
此時,完工!
自己親測成功的。雖然好多不明白,但會繼續看手動繫結,多了就明白了,至少能調到了。網上教程好多,千萬不要總是試,總是半途而廢,遇到問題要多想想解決辦法,要不然到頭來會浪費很多時間。
JS自定義乙個Map類
例子1 定義簡單map function getmap map get function key map remove function key map keyset function if ret else return map var map getmap map.put 395 12,21,5...
自定義乙個vector向量類
c 標準模板庫stl給出了vector,list,deque,stack,set,map等模板類,平時我們直接使用居多,對於類內部怎麼實現不在意。現在以向量類vector為例,簡單自定義 其uml vetor 陣列名ele t 陣列目前大小size int 陣列容量cap int vector 用指...
自定義乙個python日誌類
本文介紹如何寫乙個python日誌類,用來輸出不同級別的日誌資訊到不同的日誌檔案裡。1 將不同級別的日誌輸出到不同的日誌檔案裡,方便自己排查問題。2 生成的日誌放在專案根目錄的logs資料夾裡 3 日誌類支援debug,info,warning,error,critical五種級別日誌。4 日誌輸出...