Cocos2dxLuaJavaBridge.callLuaGlobalFunctionWithString(luaFunc,"globalsuccess")
这里的luaFunc要定义成全局函数 如
function luaFunc(param)
if "globalsuccess" == param then
print("java成功调用lua")
end
end
我也遇到这问题了,请大神支招
请问楼主解决这个问题了吗?能不能麻烦告诉我一下解决方案呢?跪谢!!!
这个问题在quick之前的文档里是有说明的(话说quick的文档越来越不齐的样子。。。)
java call lua出错的原因是 android 下cocos运行环境是在GLThread, 楼主调用lua的函数是在android什么线程下调用的?
Cocos2dxActivity有提供runOnGLThread 方法, 你在android环境下找到主activity ,调用runOnGLThread 来call lua才是正确的姿势
我在lua调java时都出问题 : :0: attempt to index global ‘LuaJavaBridge’ (a nil value)
有没兄弟能给个正解
搞了半天是不能在电脑上跑,在手机上跑就可以了,请无视我上面的问题
@brad_chem 我在GL线程中调用也不行,麻烦大大们帮我看看吧,这个问题调了一天了,,直接用的demo,都报错,无语了啊。
package org.cocos2dx.lua_tests;
import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import android.os.Bundle;
import com.cocos2dx.sample.LuaJavaBridgeTest.LuaJavaBridgeTest;
public class AppActivity extends Cocos2dxActivity{
static {
System.loadLibrary("lua_tests");
}
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
// Tests should create stencil buffer
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
return glSurfaceView;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
LuaJavaBridgeTest.setContent(this);
}
}
package com.cocos2dx.sample.LuaJavaBridgeTest;
import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;
public class LuaJavaBridgeTest
{
static Cocos2dxActivity mActivity;
public static void setContent(Cocos2dxActivity context){
mActivity = context;
}
public static int addTwoNumbers(final int num1,final int num2){
return num1 + num2;
}
public static void callbackLua(final String tipInfo,final int luaFunc){
System.out.println("wei luaFunc .... "+luaFunc);
mActivity.runOnGLThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFunc, "success");
Cocos2dxLuaJavaBridge.releaseLuaFunction(luaFunc);
}
});
}
}
luaFunc你从哪里来的?
callLuaFunctionWithString 是lua调用java后传递一个luaFunc给java,做完工作后回调。 如果是异步处理,还需要retain luaFunc
如果你是java直接调用lua函数,只能调用lua全局func,用callLuaGlobalFunctionWithString
之前廖大的文档是写得很详细的。。
我是 Lua先调用了一下java,并且将functionId传入java,在java中打印functionId是正确的,再进行java回掉Lua,这时候就报错了。我这个用的是3.3rc0 的demo,进行编译,运行,最后也报这个错误。看android.mk,这个类被编译进so了啊,还是找不到Cocos2dxLuaJavaBridge这个类中的四个方法。难道是我哪里配置错了吗?
历经这么久终于解决这个问题了,这个问题出现的原因是 cocos2dx 3.3 rc0 的问题,在rc1及以后,这个问题已经解决了。。。。
最近在做googleplay支付的sdk 在购买成功 回调自己的服务器时出现了java调用lua代码无效的情况 现在把代码贴出来 希望得到大家的指点:
myAppActivity.runOnGLThread(new Runnable()
{
public void run()
{
if (json != null)
{
Cocos2dxLuaJavaBridge.callLuaGlobalFunctionWithString(“BuyItem”,json);
}
}
});
myAppActivity.runOnGLThread(new Runnable()
{
public void run()
{
if (json != null)
{
Cocos2dxLuaJavaBridge.callLuaGlobalFunctionWithString("BuyItem",json);
}
}
});
从零开始填坑了,我也遇到这个问题。唉,跟其他平台做交互的时候 ,API真心难用啊。