[关闭]
@lisaisacat 2019-12-16T06:24:43.000000Z 字数 15792 阅读 506

手册


目录

使用说明

简介

欢迎您使用触动精灵开发文档!
希望以下文档可以帮助您解决开发中遇到的函数问题,如有纰漏之处欢迎您向我们反馈。

文档目录

标准版&专业版函数
专业版函数
TSLib 基础扩展库
ts.so 高级扩展库
tsimg.so 图片扩展库
企业版函数
TS Remote API 触动精灵远程接口开发手册
触动云代理使用手册
VPN 配置插件使用手册
sz.so 苏泽扩展库(停止维护)

前言

触动精灵是一款模拟手机触摸、按键操作的软件。通过制作脚本,可以让触动精灵代替双手,自动执行一系列触摸、按键操作。触动精灵简单、易用,不需要掌握任何编程知识就可以录制出功能强大的脚本;还可以使用编程知识,编写出功能更为复杂,交互更为灵活的脚本;只要能够在手机上完成的人为操作,触动精灵都可以代替完成,不仅省力,而且高效。

   触动精灵采用 Lua 脚本语言作为底层语言,支持 Lua 5.2.3 版本的所有语法与基本函数,并在其基础上添加了一些扩展函数,用于实现取色、找色、找图、发送触摸事件等高级功能。

用户在阅读本函数说明前,请学习以下基本语法:

    - 注释
    - 变量与类型
    - 运算符
    - 条件、循环控制
    - 函数定义
    - 库函数
    - ……

   本说明仅供初等文化水平以上的、了解计算机编程基本原理的个人学习与参考,并不适用于零基础的编程入门者学习编程基本知识。严禁用于商业以及非法目的,严禁转载、抄袭、未经许可地引用。

   为了便于解释和描述,本说明中采用了一些非专业的描述与形容方法(如:number),敬请理解。因编写校对仓促,如有错误欢迎指正。本文中的示例仅供函数参考,不能直接用于脚本中。

重要提示

Lua 官方手册:http://www.lua.org/manual/5.2/
Lua 基础简明教程:http://www.touchsprite.com/helpdoc#/doc?id=1734
触动精灵的脚本在开发、存储过程必须使用 UTF-8 文本编码格式,如果出现脚本中无法正常显示与处理中文,请在您使用的编辑器或 IDE 中将文本编码格式设置为 UTF-8。

开发指南

产品名称 自定义图标 录制 调试 运行源码 授权 批量控制 支持平台 开发者平台
触动精灵 × iOS:36 元/台/年,Android:免费 购买 API 自行开发 iOS/Android http://dev.touchsprite.com
触动小精灵 × × × 5.5 元/台/月 购买 API 自行开发 iOS/Android http://app.touchsprite.com
触动企业版 × × × 详见 免费 iOS/Android http://ent.touchsprite.com

安卓小精灵有免费版,但不能使用网络模块和高级函数库

学习前的准备

越狱及 root 常识

  • 在学习脚本开发之前,首先要具备一些关于 iOS 越狱和安卓 root 的知识,以及触动精灵的常用信息
  • 文档链接:http://www.touchsprite.com/docs/5383
  • 看了上面的文档,你可以具备以下知识:
    • 什么样的手机适合用来做脚本开发
    • 拿到一台越狱手机之后应该做什么才能避免白苹果和报错
    • Cydia 不见了或者已安装界面空白该怎么办
    • 为什么安装插件总是报错呢

Lua 基础简明教程

  • 首先你需要了解 Lua 这门语言的一些基础知识,什么是循环,什么是函数,布尔型和数值型分别是什么意思,才有可能看得懂下面的教程和手册。
  • 文档地址:http://www.touchsprite.com/docs/5362

脚本开发取色技巧

  • 新手在学习使用触动精灵开发脚本的时候,总会进入一些误区,或者会有一些迷惑的点,觉得无从下手,本文总结了一些自己在学习过程中遇到的问题和经验技巧,欢迎大家一起交流分享。
  • 文档链接:http://www.touchsprite.com/docs/5026
  • 看了上面的文档,你可以具备以下知识:
  • 透明背景图、动图、带动画的界面应该怎么取色
  • 找色和找图哪个更好用
  • 函数封装是什么
  • 脚本报错了怎么办

小白学触动零基础视频教程

  • 如果你没有任何编程基础,可以先看一下零基础教学视频:http://www.touchsprite.com/docs/5478
  • 看了上面的文档,你可以具备以下知识:
    • deb 插件安装方法
    • 平刷插件 Cydia Eraser
    • SSH 命令工具 putty
    • 触动精灵的安装使用及常识
    • 抓色器和编辑器的使用及常识
    • 同样的脚本为什么有的手机运行异常
    • showUI 返回值的调用
    • showUI 应该怎么写才简洁好用
    • 大漠字库工具的用法

文件路径

在开发脚本的过程中,你可能会需要访问触动精灵的文件路径进行调试、读写等操作。

下面以触动精灵为例,列出文件常用路径。
触动精灵
iOS 平台
使用教程:http://www.touchsprite.com/docs/4875
官方源地址:http://apt.touchsprite.com
测试源地址:http://apt-test.touchsprite.com
脚本存放路径:/var/mobile/Media/TouchSprite/lua
默认资源路径:/var/mobile/Media/TouchSprite/res
脚本日志路径:/var/mobile/Media/TouchSprite/log
配置文件路径:/var/mobile/Media/TouchSprite/config
插件文件路径:/var/mobile/Media/TouchSprite/plugin

Android 平台

使用教程:http://www.touchsprite.com/docs/4928
下载地址:http://www.touchsprite.com/touchsprite
脚本存放路径:/mnt/sdcard/TouchSprite/lua
默认资源路径:/mnt/sdcard/TouchSprite/res
脚本日志路径:/mnt/sdcard/TouchSprite/log
配置文件路径:/mnt/sdcard/TouchSprite/config
插件文件路径:data/data/com.touchsprite.android/files/plugin

注意事项:

  • 有些函数不支持触动精灵低版本,请仔细阅读函数说明并尽量保持触动精灵客户端为最新版。
  • 测试版为不稳定版本,为避免不必要的麻烦,请勿大规模安装。
  • iOS 11 系统的设备,原 TouchSprite 文件夹下新增 plugin_ios11 快捷方式,连接到 usr/bin/tsplugin。
  • iOS 11 系统的设备, tsp 自带的 so 文件将释放到该路径,但 lua 文件释放路径保持不变。
  • iOS 11 系统的设备,如果开发者想要手动导入 so 文件,也需要放到 usr/bin/tsplugin 目录下。
  • 由于系统限制,安卓 7 系统及以上的设备,插件需要存放到 data/data/com.touchsprite.android/files/plugin 路径下。
  • 内置函数库调用规则:优先调用 lua 路径下的同名文件,没有则调用内置函数库。
  • iOS 测试源和官方源的 Bundle ID 不同,不能跨源覆盖安装或直接升级,请卸载之后再安装另一个源的版本。
  • 安卓不同机型路径有差别,请用 userPath 函数获取路径。

开发工具

工欲善其事,必先利其器。
在学习触动精灵脚本编写前,我们需要下载安装一些辅助工具来完成脚本编写工作,包含但不限于以下工具:

脚本编辑器:TouchSprite Studio
支持函数自动补全、函数提示、关键字高亮、文件传送、远程运行、自动缩进等常用功能,已内置所有至最新 2.3.6 版本触动精灵扩展函数,推荐使用。
下载地址:http://www.touchsprite.com/tools
使用手册:http://www.touchsprite.com/docs/4967
视频教程:http://v.youku.com/v_show/id_XMTgwNzY3NzAwNA==.html

抓色器:TSColorPicker
一个趁手的抓色器可以让你的脚本开发过程变的轻松愉快,在此强烈推荐触动抓色器,快捷抓点、一键生成代码、远程抓屏,让你如虎添翼。
下载地址:http://www.touchsprite.com/tools
使用手册:http://www.touchsprite.com/docs/4955
视频教程:http://v.youku.com/v_show/id_XMTgyNDg4NjAwNA==.html
远程抓屏功能需使用触动精灵 iOS v2.1.5 及其以上版本。

字库工具
触动精灵字库工具是 五毛 和 大脸猫 联合开发的字库文件和点阵代码生成工具,旨在解决大漠工具取字只有 11 个像素不适用于分辨率越来越高的移动端脚本开发的问题。
触动精灵字库工具下载地址:http://www.touchsprite.com/tools
使用手册:http://www.touchsprite.com/docs/4961
视频教程:http://v.youku.com/v_show/id_XMjcyNzE2MzkzMg==.html

已兼容的模拟器
雷电模拟器、猩猩模拟器、网易 MUMU 模拟器、夜神模拟器、海马玩模拟器、逍遥模拟器、51 模拟器。
模拟器使用手册:http://www.touchsprite.com/docs/5441
从系统兼容和资源占用角度考虑,推荐使用雷电模拟器、夜神模拟器。

相关工具

设备 SSH 连接工具
1. WinSCP:https://pan.baidu.com/s/1del626 密码:wdcn
2. 简体中文语言包:https://pan.baidu.com/s/1dmYZL0 密码:jd9z
3. Putty:https://pan.baidu.com/s/1pMwHRUN 密码:pegn

相关工具运行库
1. VCredist 2010:https://pan.baidu.com/s/1cSap22 密码:mchk
2. NET Framework 4:http://www.microsoft.com/zh-cn/download/details.aspx?id=17718

OCR(光学字符识别)相关
1. 触动精灵本地 OCR 简体中文识别库:https://pan.baidu.com/s/1snhuZyH 密码:hy56
2. 触动精灵本地 OCR 英文数字识别库:https://pan.baidu.com/s/1pMbdlEV 密码:9ewt

LuaSQLite
http://lua.sqlite.org/index.cgi/doc/tip/doc/lsqlite3.wiki

iOS 设备分辨率一览表

设备 标准模式分辨率(px) 放大模式分辨率(px)
iPhone4(S)/iPod Touch4G 640x960 -
iPhone 5(S/C)/SE/iPod Touch5G(6G) 640x1136 -
iPhone 6(S)/7/8 750x1334 640x1136
iPhone 6 P/6SP/7P/8P 1242x2208 1125x2001
iPhone X 1125x2436 -
iPad 1/2/mini 768x1024 -
TheNewiPad/iPad 4/Air/Air2 1536x2048 -
iPad mini 2/mini 3/mini 4 1536x2048 -
iPad Pro 2048×2732 -
iPhone XR/11 828×1792 -
iPhone XS Max/11 Pro Max 1242x2688 -
iPhone XS/11 Pro 1125×2436 -

注意事项:
触动引擎使用的是逻辑分辨率而不是物理分辨率

iOS 机型对照表

  1. -----------iPhone-----------
  2. iPhone 2,1(iPhone 3GS 产品型号:国行 - A1325;国际版 - A1303
  3. iPhone 3,1(iPhone 4 GSM 产品型号:A1332)
  4. iPhone 3,2(iPhone 4 8G 新制程版,目前新出的国行 8G 版均为此型号,型号同为:A1332)
  5. iPhone 3, (iPhone 4 CDMA 产品型号:A1349 )
  6. iPhone 4,1(iPhone 4S 产品型号:A1387(电信版&国际版);A1431(联通专用型号))
  7. iPhone 5,1(iPhone 5 产品型号:A1428 - 3G+4G+GSM)
  8. iPhone 5,2(iPhone 5 产品型号:A1429;中国电信定制版 - A1442 - 3G+4G+GSM+CDMA)
  9. iPhone 5,3(iPhone 5C 产品型号:A1532 A1456 CDMA)
  10. iPhone 5,4(iPhone 5C 产品型号:A1526 A1529 A1507 GSM)
  11. iPhone 6,1(iPhone 5S 产品型号:A1533 A1453 CDMA)
  12. iPhone 6,2(iPhone 5S 产品型号:A1528 A1530 A1457 GSM)
  13. iPhone 7,1(iPhone 6 Plus)
  14. iPhone 7,2(iPhone 6 产品型号:A1549 A1586 A1589)
  15. iPhone 8,1(iPhone 6S 产品型号:A1633 A1688 A1700)
  16. iPhone 8,2(iPhone 6S Plus 产品型号:A1634 A1687 A1699)
  17. iPhone 8,3(iPhone SE 产品型号:A1723A1662A1724)
  18. iPhone 8,4(iPhone SE产品型号:A1723A1662A1724)
  19. iPhone 9,1(iPhone 7 产品型号:A1660 A1779 A1780)
  20. iPhone 9,2(iPhone 7 Plus 产品型号:A1661 A1785 A1786)
  21. iPhone 9,3(iPhone 7 产品型号:A1778)
  22. iPhone 9,4(iPhone 7 Plus 产品型号:A1784)
  23. iPhone 10,1(iPhone 8 产品型号:A1863 A1906 A1907)
  24. iPhone 10,2(iPhone 8 Plus 产品型号:A1864 A1898 A1899)
  25. iPhone 10,3(iPhone X 产品型号:A1865 A1902)
  26. iPhone 10,4(iPhone 8 产品型号:A1905)
  27. iPhone 10,5(iPhone 8 Plus 产品型号:A1897)
  28. iPhone 10,6(iPhone X 产品型号:A1865 A1901 A1902)
  29. iPhone 11,2(iPhone XS 产品型号:A1920 A2097 A2098 A2099 A2100)
  30. iPhone 11,4(iPhone XS Max 产品型号:A1920 A2097 A2098 A2100)
  31. iPhone 11,6(iPhone XS Max 产品型号:A1921 A2101 A2102 A2104)
  32. iPhone 11,8(iPhone XR 产品型号:A1984 A2105 A2106 A2107 A2108)
  33. iPhone 12,1(iPhone 11 产品型号:A2111 A2223 A2221)
  34. iPhone 12,3(iPhone 11 Pro Max 产品型号:A2161 A2220 A2218)
  35. iPhone 12,5(iPhone 11 Pro 产品型号:A2160 A2217 A2215)
  36. --------iPod Touch--------
  37. iPod4,1(iPod touch 4 产品型号:A1367)
  38. iPod5,1(iPod touch 5 产品型号:A1421)
  39. iPod7,1(iPod Touch 6G)
  40. --------iPad--------
  41. iPad 2,1(产品型号:A1395 - iPad 2 Wi-Fi)
  42. iPad 2,2(产品型号:A1396 - iPad 2 Wi-Fi+3G+GSM)
  43. iPad 2,3(产品型号:A1397 - iPad 2 Wi-Fi+3G+GSM+CDMA)
  44. iPad 2,4(产品型号:iPad 2 Wi-Fi rev_a 新制程版)
  45. iPad 2,5(产品型号:A1432 - iPad Mini Wi-Fi)
  46. iPad 2,6(产品型号:A1454 - iPad Mini Wi-Fi+3G+4G+GSM)
  47. iPad 2,7(产品型号:A1455 - iPad Mini Wi-Fi+3G+4G+GSM+CDMA)
  48. iPad 3,1(产品型号:A1416 NewPad - iPad 3 Wi-Fi)
  49. iPad 3,2(产品型号:A1403 NewPad - iPad 3 Wi-Fi+3G+GSM+CDMA)
  50. iPad 3,3(产品型号:A1430 NewPad - iPad 3 Wi-Fi+3G+GSM)
  51. iPad 3,4(产品型号:A1458 - iPad 4 Wi-Fi)
  52. iPad 3,5(产品型号:A1459 - iPad 4 Wi-Fi+3G+4G+GSM)
  53. iPad 3,6(产品型号:A1460 - iPad 4 Wi-Fi+3G+4G+GSM+CDMA)
  54. iPad 4,1(iPad Air)
  55. iPad 4,2(iPad Air)
  56. iPad 4,3(iPad Air)
  57. iPad 4,4(产品型号:A1489 - iPad Mini 2 )
  58. iPad 4,5(iPad Mini 2)
  59. iPad 4,6(iPad Mini 2)
  60. iPad 4,7(iPad Mini 3)
  61. iPad 4,8(iPad Mini 3)
  62. iPad 4,9(iPad Mini 3)
  63. iPad 5,1(iPad Mini 4)
  64. iPad 5,2(iPad Mini 4)
  65. iPad 5,3(iPad Air2)
  66. iPad 5,4(iPad Air 2)

iOS 系统设置参数对照表

参数 说明
prefs:root=WIFI WIFI
prefs:root=INTERNET_TETHERING 个人热点
prefs:root=MOBILE_DATA_SETTINGS_ID 蜂窝设置
prefs:root=Privacy 隐私
prefs:root=General&path 通用
prefs:root=LOCATION_SERVICES 定位服务
prefs:root=VPN VPN
prefs:root=General&path=About 关于
prefs:root=General&path=ACCESSIBILITY 辅助功能
prefs:root=AIRPLANE_MODE 飞行模式
prefs:root=General&path=AUTOLOCK 自动锁屏时间
prefs:root=General&path=USAGE 用量
prefs:root=Brightness 亮度
prefs:root=General&path=Bluetooth 蓝牙
prefs:root=General&path=DATE_AND_TIME 日期和时间
prefs:root=FACETIME Facetime 设置
prefs:root=General&path=Keyboard 键盘设置
prefs:root=CASTLE Icloud
prefs:root=CASTLE&path=STORAGE_AND_BACKUP 备份
prefs:root=General&path=INTERNATIONAL 语言与地区设置
prefs:root=ACCOUNT_SETTINGS 账户设置
prefs:root=MUSIC 音乐
prefs:root=MUSIC&path=EQ EQ 均衡器
prefs:root= 设置
prefs:root=NOTES 备忘录
prefs:root=NOTIFICATIONS_ID 通知
prefs:root=Phone 电话设置
prefs:root=Photos 照片与相机设置
prefs:root=General&path=Reset 还原
prefs:root=Sounds&path=Ringtone 铃声设置
prefs:root=Safari Safari
prefs:root=Sounds 声音
prefs:root=General&path=SOFTWARE_UPDATE_LINK 系统更新
prefs:root=STORE STORE 设置
prefs:root=VIDEO 视频设置
prefs:root=Wallpaper 壁纸设置

已知越狱冲突的插件

如果您安装了以下插件导致触动精灵服务使用异常,请在 Cydia 中卸载该插件后重新安装客户端。

冲突插件 导致问题
Stashing(内存修正插件) 会导致帮你玩无法注册和登录账号,提示文件获取失败
StatusHUD2 插件 会导致脚本 showUI 无法弹
PS/易天行(伪装地理位置插件) 会导致点击失效或服务无法启动
CCSettings(修改美化控制中心插件) 会导致脚本 showUI 无法弹出
协奏助手 会导致点击失效
按键精灵 iOS 会导致 UI 弹出后点击【取消】【确定】无反应
xxplugin - coc/cok(xxplugin 系列插件) 会导致点击失效或服务无法启动
XY 苹果助手 会导致点击失效或服务无法启动

安卓手机如何开启系统悬浮窗权限

小米
- 设置 - (界面底部)其他应用管理 - 触动精灵 - 应用详情界面上滑 - (底部)权限管理 - 悬浮窗管理 - (弹出的底部菜单)选择允许
- 安全中心 - 授权管理 - 应用权限管理 - 小精灵名称 - 显示悬浮窗 - 开启

华为

魅族、魅蓝

OPPO

乐视

三星 S7
- 设置 - 应用程序 - 应用程序管理 - 更多 - 可出现在顶部的应用程序 - 触动精灵 - 开启

锤子坚果

默认开启悬浮窗权限的手机
- vivo
- 酷派
- 金立

Android 按键类编码

电话功能按键

键名 描述 键值
KEYCODE_HOME 按键 Home 3
KEYCODE_BACK 返回键 4
KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25
KEYCODE_POWER 电源键 26
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_MENU 菜单键 82
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_SEARCH 搜索键 84
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164

控制类按键

键名 描述 键值
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_TAB Tab 键 61
KEYCODE_ENTER 回车键 66
KEYCODE_DEL 退格键 67
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键 93
KEYCODE_ESCAPE ESC 键 111
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_BREAK Break/Pause 键 121
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_INSERT 插入键 124
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169

基本类按键

键名 描述 键值
KEYCODE_0 按键'0' 7
KEYCODE_1 按键'1' 8
KEYCODE_2 按键'2' 9
KEYCODE_3 按键'3' 10
KEYCODE_4 按键'4' 11
KEYCODE_5 按键'5' 12
KEYCODE_6 按键'6' 13
KEYCODE_7 按键'7' 14
KEYCODE_8 按键'8' 15
KEYCODE_9 按键'9' 16
KEYCODE_A 按键'A' 29
KEYCODE_B 按键'B' 30
KEYCODE_C 按键'C' 31
KEYCODE_D 按键'D' 32
KEYCODE_E 按键'E' 33
KEYCODE_F 按键'F' 34
KEYCODE_G 按键'G' 35
KEYCODE_H 按键'H' 36
KEYCODE_I 按键'I' 37
KEYCODE_J 按键'J' 38
KEYCODE_K 按键'K' 39
KEYCODE_L 按键'L' 40
KEYCODE_M 按键'M' 41
KEYCODE_N 按键'N' 42
KEYCODE_O 按键'O' 43
KEYCODE_P 按键'P' 44
KEYCODE_Q 按键'Q' 45
KEYCODE_R 按键'R' 46
KEYCODE_S 按键'S' 47
KEYCODE_T 按键'T' 48
KEYCODE_U 按键'U' 49
KEYCODE_V 按键'V' 50
KEYCODE_W 按键'W' 51
KEYCODE_X 按键'X' 52
KEYCODE_Y 按键'Y' 53
KEYCODE_Z 按键'Z' 54
KEYCODE_SPACE 空格键

iOS 按键码表

按键码表[字母]

按键码 说明
"a" a or A
"b" b or B
"c" c or C
"d" d or D
"e" e or E
"f" f or F
"g" g or G
"h" h or H
"i" i or I
"j" j or J
"k" k or K
"l" l or L
"m" m or M
"n" n or N
"o" o or O
"p" p or P
"q" q or Q
"r" r or R
"s" s or S
"t" t or T
"u" u or U
"v" v or V
"w" w or W
"x" x or X
"y" y or Y
"z" z or Z

按键码表[数字]

按键码 说明
"0" 1 or !
"1" 2 or @
"2" 3 or #
"3" 4 or $
"4" 5 or %
"5" 6 or ^
"6" 7 or &
"7" 8 or *
"8" 9 or (
"9" 0 or )

按键码表[其他]

按键码 说明
"Hyphen" - or _
"EqualSign" = or +
"OpenBracket" [ or {
"CloseBracket" ] or }
"Backslash" \ or l
"NonUSPound" Non-US # or _
"Semicolon" ; or :
"Quote" ' or "
"GraveAccentAndTilde" Grave Accent and Tilde
"Comma" , or <
"Period" . or >
"Slash" / or ?

按键码表[更多请自行尝试]

  1. "ReturnOrEnter" /* Return (Enter) */
  2. "Escape" /* Escape */
  3. "DeleteOrBackspace" /* Delete (Backspace) */
  4. "Tab" /* Tab */
  5. "Spacebar" /* Spacebar */
  6. "CapsLock" /* Caps Lock */
  7. "F1" /* F1 */
  8. "F2" /* F2 */
  9. "F3" /* F3 */
  10. "F4" /* F4 */
  11. "F5" /* F5 */
  12. "F6" /* F6 */
  13. "F7" /* F7 */
  14. "F8" /* F8 */
  15. "F9" /* F9 */
  16. "F10" /* F10 */
  17. "F11" /* F11 */
  18. "F12" /* F12 */
  19. "PrintScreen" /* Print Screen */
  20. "ScrollLock" /* Scroll Lock */
  21. "Pause" /* Pause */
  22. "Insert" /* Insert */
  23. "Home" /* Home */
  24. "PageUp" /* Page Up */
  25. "DeleteForward" /* Delete Forward */
  26. "End" /* End */
  27. "PageDown", /* Page Down */
  28. "RightArrow" /* Right Arrow */
  29. "LeftArrow" /* Left Arrow */
  30. "DownArrow" /* Down Arrow */
  31. "UpArrow" /* Up Arrow */
  32. "KeypadNumLock" /* Keypad NumLock or Clear */
  33. "KeypadSlash" /* Keypad / */
  34. "KeypadAsterisk" /* Keypad * */
  35. "KeypadHyphen" /* Keypad - */
  36. "KeypadPlus" /* Keypad + */
  37. "KeypadEnter" /* Keypad Enter */
  38. "Keypad1" /* Keypad 1 or End */
  39. "Keypad2" /* Keypad 2 or Down Arrow */
  40. "Keypad3" /* Keypad 3 or Page Down */
  41. "Keypad4" /* Keypad 4 or Left Arrow */
  42. "Keypad5" /* Keypad 5 */
  43. "Keypad6" /* Keypad 6 or Right Arrow */
  44. "Keypad7" /* Keypad 7 or Home */
  45. "Keypad8" /* Keypad 8 or Up Arrow */
  46. "Keypad9" /* Keypad 9 or Page Up */
  47. "Keypad0" /* Keypad 0 or Insert */
  48. "KeypadPeriod" /* Keypad . or Delete */
  49. "NonUSBackslash" /* Non-US \ or | */
  50. "Application" /* Application */
  51. "Power" /* Power */
  52. "EqualSign" /* Keypad = */
  53. "F13" /* F13 */
  54. "F14" /* F14 */
  55. "F15" /* F15 */
  56. "F16" /* F16 */
  57. "F17" /* F17 */
  58. "F18" /* F18 */
  59. "F19" /* F19 */
  60. "F20" /* F20 */
  61. "F21" /* F21 */
  62. "F22" /* F22 */
  63. "F23" /* F23 */
  64. "F24" /* F24 */
  65. "Execute" /* Execute */
  66. "Help" /* Help */
  67. "Menu" /* Menu */
  68. "Select" /* Select */
  69. "Stop" /* Stop */
  70. "Again" /* Again */
  71. "Undo" /* Undo */
  72. "Cut" /* Cut */
  73. "Copy" /* Copy */
  74. "Paste" /* Paste */
  75. "Find" /* Find */
  76. "Mute" /* Mute */
  77. "VolumeUp" /* Volume Up */
  78. "VolumeDown" /* Volume Down */
  79. "LockingCapsLock" /* Locking Caps Lock */
  80. "LockingNumLock" /* Locking Num Lock */
  81. "LockingScrollLock" /* Locking Scroll Lock */
  82. "Comma" /* Keypad Comma */
  83. "EqualSignAS400", /* Keypad Equal Sign for AS/400 */
  84. "International1", /* International1 */
  85. "International2", /* International2 */
  86. "International3", /* International3 */
  87. "International4", /* International4 */
  88. "International5", /* International5 */
  89. "International6", /* International6 */
  90. "International7", /* International7 */
  91. "International8", /* International8 */
  92. "International9", /* International9 */
  93. "LANG1" /* LANG1 */
  94. "LANG2" /* LANG2 */
  95. "LANG3" /* LANG3 */
  96. "LANG4" /* LANG4 */
  97. "LANG5" /* LANG5 */
  98. "LANG6" /* LANG6 */
  99. "LANG7" /* LANG7 */
  100. "LANG8" /* LANG8 */
  101. "LANG9" /* LANG9 */
  102. "AlternateErase" /* AlternateErase */
  103. "SysReqOrAttention" /* SysReq/Attention */
  104. "Cancel" /* Cancel */
  105. "Clear" /* Clear */
  106. "Prior" /* Prior */
  107. "Return" /* Return */
  108. "Separator" /* Separator */
  109. "Out" /* Out */
  110. "Oper" /* Oper */
  111. "ClearOrAgain" /* Clear/Again */
  112. "CrSelOrProps" /* CrSel/Props */
  113. "ExSel" /* ExSel */
  114. "LeftControl" /* Left Control */
  115. "LeftShift" /* Left Shift */
  116. "LeftAlt" /* Left Alt */
  117. "LeftGUI" /* Left GUI */
  118. "RightControl" /* Right Control */
  119. "RightShift" /* Right Shift */
  120. "RightAlt" /* Right Alt */
  121. "RightGUI" /* Right GUI */
  122. "ErrorRollOver", /* ErrorRollOver */
  123. "POSTFail", /* POSTFail */
  124. "ErrorUndefined", /* ErrorUndefined */

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:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "lua.h"
  4. #include "lualib.h"
  5. #include "lauxlib.h"
  6. #import <objc/runtime.h>
  7. #import <Foundation/Foundation.h>
  8. #import <UIKit/UIDevice.h>
  9. /* 库 open 函数的前置声明 */
  10. int luaopen_mt(lua_State *L);
  11. /* Function mt_get_device_name
  12. * @return string device name
  13. */
  14. static int mt_get_device_name(lua_State *L)
  15. {
  16. NSString *name = [[UIDevice currentDevice] name];
  17. const char * name_str = [name UTF8String];
  18. lua_pushstring(L, name_str);
  19. return 1;
  20. }
  21. //注册函数库
  22. static const luaL_Reg mt_lib[] = {
  23. {"device_name", mt_get_device_name}, //获取设备名称
  24. {NULL, NULL}
  25. };
  26. int luaopen_mt(lua_State *L)
  27. {
  28. luaL_newlib(L, mt_lib);
  29. return 1;
  30. }

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

  1. 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
  2. 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 中引用了:

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

lua math 库

函数名 描述 示例 结果
pi 圆周率 math.pi 3.1415926535898
abs 取绝对值 math.abs(-2012) 2012
ceil 向上取整 math.ceil(9.1) 10
floor 向下取整 math.floor(9.9) 9
max 取参数最大值 math.max(2,4,6,8) 8
min 取参数最小值 math.min(2,4,6,8) 2
pow 计算 x 的 y 次幂 math.pow(2,16) 65536
sqrt 开平方 math.sqrt(65536) 256
modf 取整数和小数部分 math.modf(20.12) 20 0.12
randomseed 设随机数种子 math.randomseed(os.time())
random 取随机数 math.random(5,90) 5 ~ 90
rad 角度转弧度 math.rad(180) 3.1415926535898
deg 弧度转角度 math.deg(math.pi) 180
exp e 的 x 次方 math.exp(4) 54.598150033144
log 计算 x 的自然对数 math.log(54.598150033144) 4
log10 计算 10 为底,x 的对数 math.log10(1000) 3
frexp 将参数拆成 x * (2 ^ y) 的形式 math.frexp(160) 0.625 8
ldexp 计算 x * (2 ^ y) math.ldexp(0.625,8) 160
sin 正弦 math.sin(math.rad(30)) 0.5
cos 余弦 math.cos(math.rad(60)) 0.5
tan 正切 math.tan(math.rad(45)) 1
asin 反正弦 math.deg(math.asin(0.5)) 30
acos 反余弦 math.deg(math.acos(0.5)) 60
atan 反正切 math.deg(math.atan(1)) 45
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注