怎樣把乙個自定義的類繫結到JS RUNTIME

2021-07-03 20:51:09 字數 2191 閱讀 5988

說是原創,其實還是看了網上各種教程。主要看的是這篇:

但也整了好幾天,有的是因為自己沒有看清楚,有的是環境出了問題或者版本可能不一致吧。我用的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 日誌輸出...