溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cocos2d-x js 綁定test

發布時間:2020-07-09 09:54:52 來源:網絡 閱讀:652 作者:cgw0827 欄目:游戲開發

test路徑:/cocos2d-2.1beta3-x-2.1.0/tools/cxx-generator

主要參考的還是readme這個問題件,里面寫的很詳細:

https://github.com/funkaster/cxx-generator/blob/master/README.md#test



在終端中輸入:sudo port install python27py27-yaml py27-cheetah


如果你沒有安裝python 會提示sudo: port: command not found


這時你需要下載macports  http://macports.org進入該網站點擊右上角的Download按鈕進入下載頁面。下載的時候會有很多版本供你選擇,我選擇的是cocos2d-x js 綁定test,因為我的系統版本是10.7.5的而2.1.2是最高版。安裝macports  有幾點注意,要求

1、mac中安裝了Xcode 4.4以上版本,

2、安裝了Command Line Developer Tools,

3、接受Xcode的用戶許可或者運行命令xcodebuild–license。


安裝完畢后先運行sudo port –v selfupdate命令更新到最新版本,然后運行:sudoport install python27 py27-yaml py27-cheetah

沒問題的話終端提示

---> Updating database of binaries: 100.0%

---> Scanning binaries for linking errors: 100.0%

---> No broken files found.

安裝成功。


接下來配置test文件夾下的文件

1.去掉userconf..ini,user.cfg文件的.sample后綴。

2.配置user.cfg文件

PYTHON_BIN=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7(這是我的路徑)

3.配置 userconf.ini 文件:

[DEFAULT]

androidndkdir=/Users/wangjingjing/cocos2d-x/android-ndk-r8b

clangllvmdir=/Users/wangjingjing/cocos2d-x/clang+llvm-3.1-x86_64-apple-darwin11

cxxgeneratordir=/Users/wangjingjing/cocos2d-x/cocos2d-2.1beta3-x-2.1.0/tools/cxx-generator

4.運行 ./test.sh,如果配置路徑沒有問題終端會提示:

Errors in parsing headers:

1. <severity = Warning,

   location =<SourceLocation file None, line 0, column 0>,

details = "argument unusedduring compilation: '-nostdinc++'">

警告不用管,只要沒有錯誤就行。

最后會生成一個simple_test_bindings文件夾包含如下文件:

cocos2d-x js 綁定test

至此綁定過程就結束了,下面是將生成的文件放到項目中測試。

二、運行test

1、將cocos2d-x js 綁定test這兩個文件夾添加到項目的libs文件夾下。

2、修改.cpp文件的注冊函數:

voidregister_all_autogentestbindings(JSContext* cx, JSObject* obj) {

jsval nsval;

JSObject *ns;

JS_GetProperty(cx, obj, "ts",&nsval);

if (nsval == JSVAL_VOID) {

     ns = JS_NewObject(cx, NULL, NULL, NULL);

     nsval = OBJECT_TO_JSVAL(ns);

JS_SetProperty(cx, obj, "ts",&nsval);

   } else {

JS_ValueToObject(cx,nsval, &ns);

   }

   obj = ns;

js_register_autogentestbindings_SimpleNativeClass(cx, obj);

}

如果直接修改test.ini中的target_namespace =ts就可以了,綁定的時候你的這段代碼會自動生成的。

3、在AppDelegate中注冊:

先導入#include "autogentestbindings.hpp" 文件

注冊sc->addRegisterCallback(register_all_autogentestbindings);

4、在hello.js文件中找個適當的地方調用測試:

var myClass=newts.SimpleNativeClass();

varmyStr=myClass.returnsACString();      

var label = cc.LabelTTF.create(myStr, "Helvetica", 20.0);

三、分析.ini配置文件

1.prefix: 項目的前綴. target vm語言來說必須是有效的標示符。通常情況下, 這個名字總是被混合在類名和函數名之間,因為生成的是自由的函數,所以為了避免名字的沖突,scripte將生成形如${prefix}.cpp and${prefix}.hpp文件作為結果。

2.events: a list of identifiers in the formof ClassName#functionName that are events to be called from the native world tothe target vm.

3.被本地的target vm調用的事件,以ClassName#functionName形式定義的標示符清單。

4.extra_arguments: 額外參數傳遞給clang接口。重要的是你能想到這些參數傳遞給“complier”,所以將你能用到的都添加到這里。如果你想綁定 c++代碼,確保在最后你添加了“-x c++”參數去解析“.h”文件。否則將你的頭文件命名為“.hpp”。

5.headers: 需要解析的頭文件的清單,通常你將添加一個頭文件然后將其他剩下的文件導入到這個頭文件中轉換。

6.classes: 將被解析的類文件,現在僅僅支持字符串,將來會支持表達式。

7.functions: 從自由函數中分離出來的部分,和類一樣,將來會提供正規的表達式。

8.skip: 不參與bindingClasses::functions或者僅僅是functions部分。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女