您好,登錄后才能下訂單哦!
cocos2d-x接入支付等sdk時(shí),如果邏輯寫(xiě)在lua端,經(jīng)常會(huì)用到lua與java的交互,下面通過(guò)一個(gè)實(shí)例來(lái)實(shí)現(xiàn)lua與java的交互過(guò)程
一、lua端
lua中使用luaj.callStaticMethod調(diào)用java靜態(tài)方法
1 2 3 4 5 6 7 8 9 10 11 12 13 | local function onCallBack(msg) --回調(diào)處理 if msg == "success" -- end end local function callJavaCallBackLua() local luaj = require "cocos.cocos2d.luaj" local className = "org/cocos2dx/cpp/AppActivity" local args = { "test" , onCallBack } local sigs = "(Ljava/lang/String;I)V" local ok = luaj.callStaticMethod(className, "callJavaMethod" ,args,sigs) end |
以上實(shí)現(xiàn)通過(guò)lua端調(diào)用java的靜態(tài)方法callJavaMethod,并傳入2個(gè)參數(shù),一個(gè)字符串“test”和一個(gè)回調(diào)函數(shù)onCallBack
二、java端
cocos2d-x提供了Cocos2dxLuaJavaBridge帶有如下方法可以使用:
1 2 3 4 | public static native int callLuaFunctionWithString( int luaFunctionId, String value); // 調(diào)用局部Lua-Function public static native int callLuaGlobalFunctionWithString(String luaFunctionName, String value); // 調(diào)用全局Lua-Function public static native int retainLuaFunction( int luaFunctionId); // retain一次Lua-Function public static native int releaseLuaFunction( int luaFunctionId); // release掉Lua-Function |
在這里我們使用調(diào)用局部Lua-Function callLuaFunctionWithString來(lái)做示例
在AppActivity.java合適位置中加入代碼
1 | import org.cocos2dx.lib.Cocos2dxLuaJavaBridge; |
1 | static int luaFuncCallback = 0; |
1 2 3 4 | public static void callJavaMethod( final String test, final int luaFunc){ //Java中可以直接回調(diào)這個(gè)函數(shù),也可以先保存下來(lái)這個(gè)注冊(cè)的Lua局部函數(shù),一般都是保存下來(lái),等待啟用SDK充值邏輯走完后再回調(diào) luaFuncCallback = luaFunc; } |
1 2 3 4 5 6 7 | mainActivity.runOnGLThread( new Runnable() { @Override public void run() { Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFuncCallback, "success" ); Cocos2dxLuaJavaBridge.releaseLuaFunction(luaFuncCallback); } }); |
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。