2 脚本语言
触摸精灵使用Lua语言作为底层脚本语言, 支持Lua 5.2版本的所有语法与基本库函数, 并在Lua语言的基础上添加了一些扩展函数, 用于发送触摸事件、找图、找色等高级功能的实现
触摸精灵的脚本中需要有且只有一个main函数,整个脚本是从这个函数开始执行的,示例
-- 脚本入口函数
-- 整个脚本从这个函数开始执行
-- 此函数在整个脚本中必须有且只有一个 function main() -- 其他代码 end
2.1 基本语法
用户可参考Lua的官方手册或者其他资料来学习以下基本语法:
注释
变量与类型 运算符 赋值 条件控制 循环控制 函数定义 库函数 等等
2.2 脚本UI界面
用户可以通过在脚本中定义一个全局变量UI来实现定义脚本的配置界面, 该界面会在脚本运行前显示给用户, 用于让用户设置一些脚本的参数, 这些参数的值会赋值给指定的变量, 脚本运行时可以通过访问这些变量来获取用户的配置。下面是一个完整的例子:
UI = {
{ 'TextView{-请如实填写哦-}' }, { 'InputBox{}', 'name', '姓名:' }, { 'DropList{帅哥|美女}', 'sex', '性别:' }, { 'InputBox{18}', 'age', '年龄:' }, { 'DropList{是|否}', 'married', '婚否:' }, };
function main()
notifyMessage(string.format(\姓名:%s\\n性别:%s\\n年龄:%s\\n婚否:%s\name, sex, age, married));
end
上述脚本播放前会显示一个如下界面:
全局变量UI是一个Table类型的变量, 其中包含若干个子Table, 每一个子Table都是一个界面上的控件, 控件按照顺序自上而下排列, 目前支持3中类型的控件:
1. TextView (静态文本) 1.1 控件说明
该类型的控件只用来显示一行文字, 不需要用户操作 1.2 控件定义
{ 'TextView{显示的内容}' }
这个Table只有一个字符串成员, 即'TextView{显示的内容}', 其中的TextView是指定此控件的类型为静态文本, {}中的内容即为该静态文本显示的内容
2. InputBox (输入框) 2.1 控件说明
该类型的控件可以用于让用户输入一些内容, 并可以指定一个变量名, 脚本开始后通过该变量就可以访问到用户输入的内容 2.2 控件定义
{ 'InputBox{默认值}', 'var', '注释' } 这个Table中有3个字符串成员:
* 'InputBox{默认值}', 其中的InputBox是指定此控件的类型为输入框, {}中的内容是该输入框中的默认值
* 'var', 定义一个变量的名字, 脚本开始后可以通过访问这个变量来获取用户
输入的内容
* '注释', 显示在输入框上方, 用于说明该输入框的用途 2.3 使用提示
需要注意的是获取到的变量的值是默认是字符串类型, 你可以使用tonumber()函数来转换成数字类型来使用。例如 var = tonumber(var);
3. DropList (下拉列表) 3.1 控件说明
该类型的控件可以用于让用户在指定的若干个值中选择其中一个, 并可以指定一个变量名, 脚本开始后通过该变量就可以访问到用户选择的内容 3.2 控件定义
{ 'DropList{选项1|选项2|选项3|...}', 'var', '注释' } 这个Table中有3个字符串成员:
* 'DropList{选项1|选项2|选项3|...}', 其中的DropList是指定此控件的类型为下拉列表, {}中的内容是指定的若干个选项, 每个选项间用|分隔
* 'var', 定义一个变量的名字, 脚本开始后可以通过访问这个变量来获取用户选择的内容
* '注释', 显示在下拉列表上方, 用于说明该下拉列表的用途
*** 说明 ***
全局代码块(不包含在任何函数内的代码块)会在脚本的main()函数之前被调用, 所以可以在全局代码块中对UI变量进行动态的设置, UI变量是一个Table类型的变量, 可以使用Lua的Table库函数操作, 下面是一个操作UI变量的例子:
file = io.open(\打开配置文件 data = file:read(\读取全部内容 file:close(); -- 关闭文件 UI = {
{ 'InputBox{'.. data .. '}', 'demo', '演示:' }, }
function main()
notifyMessage(string.format(\end
2.3 扩展函数 logDebug()
函数说明: 输出调试信息到系统日志, 可以在“触摸精灵->设置->查看日志”中查看
参数
参数1 (字符串) : 调试信息
返回值
无
示例
logDebug(\输出\到系统日志
mSleep()
函数说明: 进行毫秒级别延迟
参数
参数1 (数字) : 毫秒数
返回值
无
示例
mSleep(1000); -- 延迟1秒
notifyMessage()
函数说明: 以文字提示框的方式通知用户
参数
参数1 (字符串) : 提示文字
参数2 (数字, 可选) : 显示的时间, 单位为毫秒, 默认为1000
返回值
无
示例
notifyMessage(\在屏幕上显示\
notifyMessage(\在屏幕上显示\显示5秒
notifyVibrate()
函数说明: 以震动方式通知用户
参数
参数1 (数字) : 毫秒数
返回值
无
示例
notifyVibrate(1000); -- 让设备震动1秒
notifyVoice()
相关推荐: