触控精灵_Lua 扩展库

Posted 游戏脚本

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触控精灵_Lua 扩展库相关的知识,希望对你有一定的参考价值。

友友们是不是感觉触动精灵提供的插件调用起来不方便,触动内置的功能十分有限?你需要什么?
文件系统操作(新建、删除、建立符号链接)……
文件格式解析(zip, rar, plist, deb)……
网络操作(http, https, ftp, sftp, ftps, udp, smtp, imap)……
图像处理(png, bmp, jpg, tiff)……

问题:有没有更加好用的 Lua 原生扩展方式呢?
答案:有!而且 Lua 扩展有很多!

Lua 的扩展(add-on)基本上来自于这两个网站:
http://luaforge.net/projects
https://rocks.moonscript.org

熟悉跨平台编译的开发者当然可以试试自己编译这当中的插件给 ios 使用。
如果有 C 语言、Objective-C、C++ 开发能力的,当然也可以自己编写 Lua 原生扩展,还能使用 iOS 的 SDK。

用 Objective-C 给 Lua 编写扩展并在 iOS 平台上运行
关于如何编写 Lua 扩展,参见 Lua 官方文档,这里并不作介绍,以下实例及说明由 i82 提供。

mt.m:

#include <stdio.h>#include <stdlib.h>
#include "lua.h"#include "lualib.h"#include "lauxlib.h"
#import <objc/runtime.h>#import <Foundation/Foundation.h>#import <UIKit/UIDevice.h>
/* 库 open 函数的前置声明 */int luaopen_mt(lua_State *L);
/* Function mt_get_device_name * @return string device name */static int mt_get_device_name(lua_State *L){ NSString *name = [[UIDevice currentDevice] name]; const char * name_str = [name UTF8String]; lua_pushstring(L, name_str); return 1;}
//注册函数库static const luaL_Reg mt_lib[] = { {"device_name", mt_get_device_name}, //获取设备名称 {NULL, NULL}};
int luaopen_mt(lua_State *L){ luaL_newlib(L, mt_lib); return 1;}


单个源文件的编译与连接命令(将 gcc 换成 g++ 可使用 Objective-C++ 语法):



xcrun -sdk iphoneos gcc -arch armv7 -arch armv7s -arch arm64 -miphoneos-version-min=4.3 -O3 -std=c99 -I/opt/theos/include/ -c -o mt.o mt.mxcrun -sdk iphoneos gcc -arch armv7 -arch armv7s -arch arm64 -miphoneos-version-min=4.3 -O3 -framework Foundation -framework UIKit -bundle -undefined dynamic_lookup -o mt.so mt.o


得到的 mt.so 即可在 Lua 中引用了:

local mt = require "mt"print(mt.device_name())


以上是关于触控精灵_Lua 扩展库的主要内容,如果未能解决你的问题,请参考以下文章

市面上有一款android的按键精灵,他是基于啥原理实现的实现

OpenResty 扩展库之——lua-resty-template

在C++中使用Lua详解

java代码,执行lua脚本!

[触动精灵] 零基础小白学触动13-16

lua能做像TC或按键精灵那样的脚本吗?