Cocos2d-x Lua实现从Android回调到Lua的方法
最近在研究怎么把积分墙嵌入到 先理一下思路要实现上面提到的回调通知 一步一步来,先看
再看在
先判断是Android的情况下再进行下一步处理 void Java_org_cocos2dx_lua_AppActivity_pointsBalanceChange( JNIEnv *env,jobject thiz,jint point ){} 到现在为止,不出意外的话,编译应该会通过,并且可以用真机运行调试,当 如果这一步你调试通了,那就表示从Android到C++的调用调通了,接下来再看C++怎么调用lua,需要在刚才的基础上添加一些配置:
1、先添加了: //把LuaEngine include进来之后,下面会用到这个 #include "CCLuaEngine.h" 2、在 //这两个我是没太明白,大概意思是得到一个可以和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 lua_pop(state,0); 到这里,
都完成了,这个时候编译一下: cocos compile -p android 不出意外是没问题的,然后真机测试,当Android的回调函数被触发的时候对应的Lua里的cclog日志也被输出出来了:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |