日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

cocos2dx java 调用lua_Cocos2d-x Lua实现从Android回调到Lua的方法

發布時間:2024/7/19 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2dx java 调用lua_Cocos2d-x Lua实现从Android回调到Lua的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在研究怎么把積分墻嵌入到Cocos2d-x Lua的里,折騰了幾天,總算調通了,主要要解決的問題是,調用積分墻之后,當積分發生改變的時候,有一個回調方法,回調會返回用戶還剩下多少積分,當Android收到這個回調的時候,需要把這個通知給lua做對應的處理,我就是在這里卡住了。

先理一下思路要實現上面提到的回調通知lua,首先要實現Android回調給C++,再從C++去調用Lua的方法。

一步一步來,先看Android端的回調方法,當有積分變化的時候,onPointBalanceChange方法會被觸發:

onPointBalanceChange方法里用到了一個pointsBalanceChange()的方法,這個方法在下面被定義成了本地函數,通過本地函數,來調用C++的代碼

再看在C++的里的代碼:

先判斷是Android的情況下再進行下一步處理

然后寫一個方法,這個方法的方法名圖上已經有詳細說明了

void Java_org_cocos2dx_lua_AppActivity_pointsBalanceChange( JNIEnv *env,jobject thiz,jint point ){}

到現在為止,不出意外的話,編譯應該會通過,并且可以用真機運行調試,當Android里的積分變化回調方法被觸發的時候,對應到C++里的方法也會被觸發,并且輸出CCLog里的內容

如果這一步你調試通了,那就表示從Android到C++的調用調通了,接下來再看C++怎么調用lua,需要在剛才的基礎上添加一些配置:

1、先添加了:

//把LuaEngine include進來之后,下面會用到這個

#include "CCLuaEngine.h"

2、在Java_org_cocos2dx_lua_AppActivity_pointsBalanceChange方法里添加一大堆東西,我挨個解釋一下(有的我也不太明白,有錯誤請指正)

//這兩個我是沒太明白,大概意思是得到一個可以和lua連接的對象

auto engine = LuaEngine::getInstance()->getLuaStack();

lua_State *state = engine->getLuaState();

//通過這個方法去查找lua函數,并壓入棧底,pointsBalanceChange是在lua定義的一個function

lua_getglobal(state, "pointsBalanceChange");

//pointsBalanceChange需要接受一個參數,這里把Android得到的積分數據,傳入給這個function

engine->pushInt(point);

//調用pointsBalanceChange函數,第二個參數表示有多少參數,第三個表示有多少個返回值,第四個參數設置成0表示如果出錯了,直接輸出原始的錯誤信息,具體的沒太明白,后續在研究

lua_pcall(state, 1, 0, 0);

//調用完成后清棧,第二個參數為從堆棧中彈出的返回值,因為沒有返回值所以設置為0

lua_pop(state, 0);

到這里,C++的代碼都寫完了,接下來需要在lua下的main.lua里實現一個pointsBalanceChange方法,接受一個參數,在這個方法里輸出一下得到的point:

都完成了,這個時候編譯一下:

cocos compile -p android

不出意外是沒問題的,然后真機測試,當Android的回調函數被觸發的時候對應的Lua里的cclog日志也被輸出出來了:

總結

以上是生活随笔為你收集整理的cocos2dx java 调用lua_Cocos2d-x Lua实现从Android回调到Lua的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。