LuaViewSDK icon indicating copy to clipboard operation
LuaViewSDK copied to clipboard

OC的代码怎么调用lua的某一个函数?

Open slxgsy opened this issue 9 years ago • 3 comments

看到demo里面有lua脚本调用oc函数的案例,但是反过来可以在oc代码里面直接调用lua 执行其中某一个函数吗? 没看到相关的代码。

另外demo中代码不完整: 2016-06-26 14:34:54.856 Demo[23080:758361] [LuaView][error] Not found Method: JHSLuaViewController.setLuaBox: 2016-06-26 14:38:07.796 Demo[23080:758361] [LuaView][error] Not found Method: JHSLuaViewController.externalApiDemo:number: 2016-06-26 14:38:07.796 Demo[23080:758361] [LuaView][error] Not found Method: JHSLuaViewController.externalApiDemo

slxgsy avatar Jun 26 '16 06:06 slxgsy

OC不懂,但是你可以参考Java:

public int luaFunc(int num) {
    LuaValue func = globals.get("luaFunc");

    if (!func.isnil()) {
      try {
        return func.call(CoerceJavaToLua.coerce(num)).toint();
      } catch (Exception e) {
        e.printStackTrace();
      }
    } else {
      System.out.println("func not found");
    }
    return 0;
  }

Zhaoyy avatar Jun 27 '16 01:06 Zhaoyy

LView.h头文件里面定义的两个API: // 调用lua定义的全局函数,functionName:函数名; args:参数队列 -(NSString_) callLua:(NSString_) functionName args:(NSArray_) args; 或者: // 获取lua定义的全局函数,name:函数名 -(LVBlock_) getLuaBlock:(NSString*) name; 这几个API暂时 IOS和安卓都不兼容,建议如果不是特殊情况不要使用

dongxicheng avatar Jun 27 '16 02:06 dongxicheng

UIView+LuaView.h 里的

  • (void) lv_callLuaByKey1:(NSString*) key1; 貌似也可以

    if( self.lv.l ) { lv_checkStack32(self.lv.l); [self.lv lv_callLuaByKey1:@"calllua"]; }

window.callback{ calllua = function() print("calllua ~~~~~~~~"); end, };

我试了一下 也可以

Hero2000 avatar Jul 04 '16 09:07 Hero2000