LuaScriptCore v2.0.0 发布,移动端 Lua 桥接框架

栏目: 软件资讯 · 发布时间: 8年前

内容简介:LuaScriptCore旨在能够在多种平台上方便地使用Lua。其提供了与各种平台的功能交互,让开发者无须关心Lua与各个平台之间是实现交互的细节,只需要根据自己的业务需求,使用LuaScriptCore提供的方法,轻松简单地实现...

LuaScriptCore旨在能够在多种平台上方便地使用Lua。其提供了与各种平台的功能交互,让开发者无须关心 Lua 与各个平台之间是实现交互的细节,只需要根据自己的业务需求,使用LuaScriptCore提供的方法,轻松简单地实现各种功能。其能做到:

  1. 从平台原生层代码调用Lua中的方法和变量,控制Lua的业务逻辑

  2. 从Lua中调用原生层提供的方法,让一些Lua无法处理或者耗时的处理交由原生方法实现

  3. 从原生层中直接扩展Lua的功能

  4. 从原生层定义的类直接映射到Lua中使用,让Lua更方便地实现面向对象的编程

LuaScriptCore迎来一次重大更新!本次更新主要涉及对象映射部分功能,其中包括:

  • 导出类型更加自由,取消强制继承Module或者ObjectClass类型的导出机制,只要类型实现ExportType则可以在Lua脚本中进行使用。在原生代码定义如下:

iOS

@interface LuaType : NSObject <LSCExportType>

// 定义属性和方法...

@end

Android

class LuaType implements LuaExportType
{
// 定义属性和方法...
}

Unity3D

class LuaType : LuaExportType 
{
// 定义属性和方法...
}

则可以在Lua中进行使用,如:

local obj = LuaType.create();
print (obj);
  • 导出类型的属性访问更加简单易用,如果的原生类有一个name的属性定义如下:

iOS

@interface LuaType : NSObject <LSCExportType>

@property (nonatomic, copy) NSString *name;

@end

Android

class LuaType implements LuaExportType
{
public String name;
}

Unity3D

class LuaType : LuaExportType 
{
private string _name;
public string name
{
get 
{
return _name;
}
set
{
_name = value;
}
}
}

以前的版本在Lua中的调用形式如下:

local obj = LuaType.create();
obj:setName("vim");
print (obj:name());

新版本中调用形式如下:

local obj = LuaType.create();
obj.name = "vim";
print (obj.name);
  • 现在可以支持类型方法的重载了!!假设你的原生类型方法有多个重载:

iOS

@interface LuaType : NSObject <LSCExportType>

- (void)test;

- (void)testWithMsg:(NSString *)msg;

@end

Android

class LuaType implements LuaExportType
{
public void test () {};

public void test(String msg) {};
}

Unity3D

class LuaType : LuaExportType 
{
public void test () {};

public void test (string msg) {};
}

在Lua中可以根据传参来调用到不同方法重载,如:

local obj = LuaType.create();
obj.test();
obj.test("Hello World");
  • 本次更新为了满足部分同学的需要,对Lua 5.1版本核心进行了支持(适用于iOS、OSX、Android平台),但是没有直接制作relase包,有需要的同学可以直接使用源码工程打包。具体打包步骤如下:

iOS

  1. 打开Source/iOS_OSX/LuaScriptCore_5_1.xcodeproj工程

  2. 选择LuaScriptCore-iOS-output或者LuaScriptCore-iOS-Swift-outputscheme编译输出iOS包

  3. 在Release/iOS或者Release/iOS-Swift中可找到导出包

OSX

  1. 打开Source/iOS_OSX/LuaScriptCore_5_1.xcodeproj工程

  2. 选择LuaScriptCore-OSX-output或者LuaScriptCore-OSX-Swift-outputshcme编译输出OSX包

  3. 在Release/OSX或者Release/OSX-Swift中可找到导出包

Android

  1. 使用Android Studio 打开Source/Android工程

  2. 打开build.gradle(Module:luascriptcore)文件,将apply from: './compile.gradle'改为apply from: './compile-5.1.5.fradle'

  3. 然后重新编译

  4. 在Source/Android/luascriptcore/build/intermediates/bundles/release/目录下找到导出包

  • 除了上述更新内容外,本次还优化了内部的一些处理逻辑和流程,同时修复了一些已的bug。具体内容包括:

  1. 优化iOS/OSX下addSearchPath接口逻辑处理

  2. 修复iOS/OSX平台在Xcode9下打包出错问题

  3. 修复Context销毁时出现崩溃的问题。

  4. 修复在Lua协程操作时访问异常问题。


【声明】文章转载自:开源中国社区 [http://www.oschina.net]


以上所述就是小编给大家介绍的《LuaScriptCore v2.0.0 发布,移动端 Lua 桥接框架》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Functional Programming in Scala

Functional Programming in Scala

Paul Chiusano、Rúnar Bjarnason / Softbound print / 2014-9-14 / USD 44.99

Functional programming (FP) is a programming style emphasizing functions that return consistent and predictable results regardless of a program's state. As a result, functional code is easier to test ......一起来看看 《Functional Programming in Scala》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具