触控精灵_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:
/* 库 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.m
xcrun -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的按键精灵,他是基于啥原理实现的实现