zoukankan      html  css  js  c++  java
  • Lua学习 2) —— Android与Lua互调

    2014-07-09

    一、Android类调用lua并回调

    Android调用Lua函数,同一时候把类作为參数传递过去。然后再Lua中回调类的函数

    调用lua

    		mLuaState = LuaStateFactory.newLuaState();
    		mLuaState.openLibs();
    		mLuaState.LdoString(KKLua.loadAssetsString(mContext, "lua/swallow.lua"));//将lua转换为字符串
    		mLuaState.getField(LuaState.LUA_GLOBALSINDEX, "luaUpdate");//获取lua中的function
    		mLuaState.pushJavaObject(this);//传递參数
    		mLuaState.call(1, 0);//一个參数, 0个返回值

    回调的接口

    	public void luaDraw(int imageId, int x, int y, int scale) {//注意也必需要是public, lua才干调用到
    		System.out.println("imageId, x, y, scale: " + imageId + ", " + x + ", " + y + ", " + scale);
    	}
    
    lua代码
    function luaUpdate(luaCanvas)
      luaCanvas:luaDraw(0, 1, 2, 1)
    end

    二、luajava介绍(在LuaJava库里面包括的)

    lua中是没有类的。luajava库中有个luajava能够创建java中的类。并调用。

    以下介绍几个方法

    ①newInstance(className, ...)

    说明:能够依据类名创建一个Java类。同一时候返回一个lua变量与Java类相应。这样在lua中就能够直接调用Java中的方法了。

    obj = luajava.newInstance("java.lang.Object")
    -- obj is now a reference to the new object
    -- created and any of its methods can be accessed.
    
    -- this creates a string tokenizer to the "a,b,c,d"
    -- string using "," as the token separator.
    strTk = luajava.newInstance("java.util.StringTokenizer", 
        "a,b,c,d", ",")
    while strTk:hasMoreTokens() do
        print(strTk:nextToken())
    end

    ②bindClass(className)

    说明:能够让lua中的变量相应一个Java的类(是类。不是实例),这样就能够用lua的这个变量创建实例以及调用静态类

    sys = luajava.bindClass("java.lang.System")
    print ( sys:currentTimeMillis() )
    
    -- this prints the time returned by the function.

    ③new(javaClass)

    说明:这个就是在②的基础上创建的

    str = luajava.bindClass("java.lang.String")
    strInstance = luajava.new(str)


    ④createProxy(interfaceNames, luaObject)

    ⑤loadLib(className, methodName)

    这两个方法眼下还没用到。以后会用了再介绍

    以上。谢谢!

  • 相关阅读:
    代码规范问题
    HTML页面中显示HTML标签<xmp>
    controller.tabBarItem.title = @"11111"不显示
    xcode9报错 Safe Area Layout Guide before iOS9.0
    iBeacon
    protocol buffer
    关于沙漠君 | 一只特立独行的猪
    机器学习预测机动车摇号:神秘的第七位
    专注的价值
    Hawk 3.1 动态页面,ajax,瀑布流
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4572974.html
Copyright © 2011-2022 走看看