1、触摸精灵操作手册2 脚本语言触摸精灵使用Lua语言作为底层脚本语言, 支持Lua 5.2版本的所有语法及基本库函数, 并在Lua语言的基础上添加了一些扩展函数, 用于发送触摸事件、找图、找色等高级功能的实现触摸精灵的脚本中需要有且只有一个main函数,整个脚本是从这个函数开始执行的,示例- 脚本入口函数- 整个脚本从这个函数开始执行- 此函数在整个脚本中必须有且只有一个function main() - 其他代码end 2.1 基本语法用户可参考Lua的官方手册或者其他资料来学习以下基本语法:注释变量及类型运算符赋值条件控制循环控制函数定义库函数等等2.2 脚本UI界面用户可以通过在脚本中定义
2、一个全局变量UI来实现定义脚本的配置界面, 该界面会在脚本运行前显示给用户, 用于让用户设置一些脚本的参数, 这些参数的值会赋值给指定的变量, 脚本运行时可以通过访问这些变量来获取用户的配置。下面是一个完整的例子:UI = TextView-请如实填写哦- , InputBox, name, 姓名: , DropList帅哥|美女, sex, 性别: , InputBox18, age, 年龄: , DropList是|否, married, 婚否: ,;function main() notifyMessage(string.format(姓名:%sn性别:%sn年龄:%sn婚否:%s, n
3、ame, sex, age, married);end 上述脚本播放前会显示一个如下界面: 全局变量UI是一个Table类型的变量, 其中包含若干个子Table, 每一个子Table都是一个界面上的控件, 控件按照顺序自上而下排列, 目前支持3中类型的控件: 1. TextView (静态文本) 1.1 控件说明 该类型的控件只用来显示一行文字, 不需要用户操作 1.2 控件定义 TextView显示的内容 这个Table只有一个字符串成员, 即TextView显示的内容, 其中的TextView是指定此控件的类型为静态文本, 中的内容即为该静态文本显示的内容 2. InputBox (输入框
4、) 2.1 控件说明 该类型的控件可以用于让用户输入一些内容, 并可以指定一个变量名, 脚本开始后通过该变量就可以访问到用户输入的内容 2.2 控件定义 InputBox默认值, var, 注释 这个Table中有3个字符串成员: * InputBox默认值, 其中的InputBox是指定此控件的类型为输入框, 中的内容是该输入框中的默认值 * var, 定义一个变量的名字, 脚本开始后可以通过访问这个变量来获取用户输入的内容 * 注释, 显示在输入框上方, 用于说明该输入框的用途 2.3 使用提示 需要注意的是获取到的变量的值是默认是字符串类型, 你可以使用tonumber()函数来转换成数
5、字类型来使用。例如var = tonumber(var); 3. DropList (下拉列表) 3.1 控件说明 该类型的控件可以用于让用户在指定的若干个值中选择其中一个, 并可以指定一个变量名, 脚本开始后通过该变量就可以访问到用户选择的内容 3.2 控件定义 DropList选项1|选项2|选项3|., var, 注释 这个Table中有3个字符串成员: * DropList选项1|选项2|选项3|., 其中的DropList是指定此控件的类型为下拉列表, 中的内容是指定的若干个选项, 每个选项间用|分隔 * var, 定义一个变量的名字, 脚本开始后可以通过访问这个变量来获取用户选择的
6、内容 * 注释, 显示在下拉列表上方, 用于说明该下拉列表的用途* 说明 *全局代码块(不包含在任何函数内的代码块)会在脚本的main()函数之前被调用, 所以可以在全局代码块中对UI变量进行动态的设置, UI变量是一个Table类型的变量, 可以使用Lua的Table库函数操作, 下面是一个操作UI变量的例子:file = io.open(/var/touchelf/conf.txt); - 打开配置文件data = (*a); - 读取全部内容(); - 关闭文件UI = InputBox. data . , demo, 演示: ,function main() notifyMessage
7、(string.format(%s, demo);end2.3 扩展函数logDebug()函数说明: 输出调试信息到系统日志, 可以在“触摸精灵-设置-查看日志”中查看参数参数1 (字符串) : 调试信息返回值无示例logDebug(hello); - 输出hello到系统日志 mSleep()函数说明: 进行毫秒级别延迟参数参数1 (数字) : 毫秒数返回值无示例mSleep(1000); - 延迟1秒 notifyMessage()函数说明: 以文字提示框的方式通知用户参数参数1 (字符串) : 提示文字参数2 (数字, 可选) : 显示的时间, 单位为毫秒, 默认为1000返回值无示例
8、notifyMessage(hello); - 在屏幕上显示hellonotifyMessage(hello, 5000); - 在屏幕上显示hello, 显示5秒 notifyVibrate()函数说明: 以震动方式通知用户参数参数1 (数字) : 毫秒数返回值无示例notifyVibrate(1000); - 让设备震动1秒 notifyVoice()函数说明: 以播放音频的方式通知用户参数参数1 (字符串) : 音频路径返回值无示例notifyVoice(/var/touchelf/a.mp3); - 播放路径为/var/touchelf/a.mp3的音频 touchDown()函数说明
9、: 发送手指按下事件参数参数1 (数字) : 手指ID, 范围0128, 用于标识一个手指, 在后续的touchMove()和touchUp()中需要使用参数2 (数字) : X坐标参数3 (数字) : Y坐标返回值无示例touchDown(0, 100, 100); - ID为0的手指在坐标为(100, 100)的点按下touchUp(0); - ID为0的手指抬起 touchMove()函数说明: 发送手指移动事件参数参数1 (数字) : touchDown()时传入的手指ID参数2 (数字) : X坐标参数3 (数字) : Y坐标返回值无示例touchDown(0, 100, 100);
10、 - ID为0的手指在坐标为(100, 100)的点按下touchMove(0, 200, 100); - ID为0的手指滑动到坐标为(200, 100)的点touchUp(0); - ID为0的手指抬起 touchUp()函数说明: 发送手指抬起事件参数参数1 (数字) : touchDown()时传入的手指ID返回值无示例touchDown(0, 100, 100); - ID为0的手指在坐标为(100, 100)的点按下touchUp(0); - ID为0的手指抬起 keyDown()函数说明: 发送物理按键按下事件参数参数1 (字符串) : 物理键名称, IOS触摸精灵现在支持的有HO
11、ME返回值无示例keyDown(HOME); - HOME键按下keyUp(HOME); - HOME键抬起 keyUp()函数说明: 发送物理按键抬起事件参数参数1 (字符串) : 物理键名称, IOS触摸精灵现在支持的有HOME返回值无示例keyDown(HOME); - HOME键按下keyUp(HOME); - HOME键抬起 getColor()函数说明: 获取指定像素的颜色参数参数1 (数字) : X坐标参数2 (数字) : Y坐标返回值返回值1 (数字) : 颜色值示例c = getColor(100, 100); - 将坐标为(100,100)的点的颜色保存在变量c中if c
12、= 0x0000ff then - 如果该点颜色为0x0000ff(纯蓝色) touchDown(0, 100, 100); - 那么点击该坐标 touchUp(0);end getColorRGB()函数说明: 获取指定像素颜色的R、G、B三个值参数参数1 (数字) : X坐标参数2 (数字) : Y坐标返回值返回值1 (数字) : R返回值2 (数字) : G返回值3 (数字) : B示例r, g, b = getColorRGB(100, 100); - 将坐标为(100,100)的点的颜色的R、G、B分别保存在变量r、g、b中if r = 0x00 and b = 0x00 and g
13、 = 0xff then - 如果该点颜色为0x0000ff(纯蓝色) touchDown(0, 100, 100); - 那么点击该坐标 touchUp(0);end findColor()函数说明: 全屏找色参数参数1 (数字) : 要找的颜色返回值返回值1 (数字) : X坐标, 如果没找到返回-1返回值1 (数字) : Y坐标, 如果没找到返回-1示例x, y = findColor(0x0000ff); - 在全屏范围找到第一个颜色为0x0000ff的点, 将其坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y
14、); - 点击那个点 touchUp(0);end findColorFuzzy()函数说明: 全屏模糊找色参数参数1 (数字) : 要找的颜色参数2 (数字) : 精确度, 有效范围为1100返回值返回值1 (数字) : X坐标, 如果没找到返回-1返回值1 (数字) : Y坐标, 如果没找到返回-1示例x, y = findColorFuzzy(0x0000ff, 90); - 在全屏范围找到第一个颜色为0x0000ff的点, 精确度为90%, 将其坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个
15、点 touchUp(0);end findColorInRegion()函数说明: 区域找色参数参数1 (数字) : 要找的颜色参数2 (数字) : 区域左上角X坐标参数3 (数字) : 区域左上角Y坐标参数4 (数字) : 区域右下角X坐标参数5 (数字) : 区域右下角Y坐标返回值返回值1 (数字) : X坐标, 如果没找到返回-1返回值1 (数字) : Y坐标, 如果没找到返回-1示例x, y = findColorInRegion(0x0000ff, 100, 100, 200, 200); - 在区域(100,100)(200,200)范围找到第一个颜色为0x0000ff的点, 将其
16、坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp(0);end findColorInRegionFuzzy()函数说明: 区域模糊找色参数参数1 (数字) : 要找的颜色参数2 (数字) : 精确度, 有效范围为1100参数3 (数字) : 区域左上角X坐标参数4 (数字) : 区域左上角Y坐标参数5 (数字) : 区域右下角X坐标参数6 (数字) : 区域右下角Y坐标返回值返回值1 (数字) : X坐标, 如果没找到返回-1返回值1 (数字) : Y坐标, 如果没找到返回-1示例
17、x, y = findColorInRegionFuzzy(0x0000ff, 90, 100, 100, 200, 200); - 在区域(100,100)(200,200)范围找到第一个颜色为0x0000ff的点, 精确度为90%, 将其坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp(0);end findImage()函数说明: 全屏找图参数参数1 (字符串) : 要找的图片的路径, 只支持BMP格式参数2 (数字, 可选) : 指定图片中透明颜色返回值返回值1 (数字) :
18、 X坐标, 如果没找到返回-1返回值1 (数字) : Y坐标, 如果没找到返回-1示例x, y = findImage(/var/touchelf/a.bmp); - 在全屏范围找到第一个路径为/var/touchelf/a.bmp的图片, 将其左上角坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp(0);endx, y = findImage(/var/touchelf/a.bmp, 0x000000); - 在全屏范围找到第一个路径为/var/sdcar/a.bmp的图片, 忽略
19、图片中颜色为0x000000(黑色)的点, 将其左上角坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp(0);end findImageFuzzy()函数说明: 全屏模糊找图参数参数1 (字符串) : 要找的图片的路径, 只支持BMP格式参数2 (数字) : 精确度, 有效范围为1100参数3 (数字, 可选) : 指定图片中透明颜色返回值返回值1 (数字) : X坐标, 如果没找到返回-1返回值1 (数字) : Y坐标, 如果没找到返回-1示例x, y = findImageFuz
20、zy(/var/touchelf/a.bmp, 90); - 在全屏范围找到第一个路径为/var/sdcar/a.bmp的图片, 精确度为90, 将其左上角坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp(0);endx, y = findImageFuzzy(/var/touchelf/a.bmp, 90, 0x000000); - 在全屏范围找到第一个路径为/var/sdcar/a.bmp的图片, 精确度为90, 忽略图片中颜色为0x000000(黑色)的点, 将其左上角坐标保存
21、到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp(0);end findImageInRegion()函数说明: 区域找图参数参数1 (字符串) : 要找的图片的路径, 只支持BMP格式参数2 (数字) : 区域左上角X坐标参数3 (数字) : 区域左上角Y坐标参数4 (数字) : 区域右下角X坐标参数5 (数字) : 区域右下角Y坐标参数6 (数字, 可选) : 指定图片中透明颜色返回值返回值1 (数字) : X坐标, 如果没找到返回-1返回值1 (数字) : Y坐标, 如果没找到返回-1
22、示例x, y = findImageInRegion(/var/touchelf/a.bmp, 100, 100, 200, 200); - 在区域(100,100)(200,200)范围找到第一个路径为/var/sdcar/a.bmp的图片, 将其左上角坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp(0);endx, y = findImageInRegion(/var/touchelf/a.bmp, 100, 100, 200, 200, 0x000000); - 在区域(10
23、0,100)(200,200)范围找到第一个路径为/var/sdcar/a.bmp的图片, 忽略图片中颜色为0x000000(黑色)的点, 将其左上角坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp(0);end findImageInRegionFuzzy()函数说明: 区域模糊找图参数参数1 (字符串) : 要找的图片的路径, 只支持BMP格式参数2 (数字) : 精确度, 有效范围为1100参数3 (数字) : 区域左上角X坐标参数4 (数字) : 区域左上角Y坐标参数5 (数
24、字) : 区域右下角X坐标参数6 (数字) : 区域右下角Y坐标参数7 (数字, 可选) : 指定图片中透明颜色返回值返回值1 (数字) : X坐标, 如果没找到返回-1返回值1 (数字) : Y坐标, 如果没找到返回-1示例x, y = findImageInRegionFuzzy(/var/touchelf/a.bmp, 90, 100, 100, 200, 200); - 在区域(100,100)(200,200)范围找到第一个路径为/var/sdcar/a.bmp的图片, 精确度为90, 将其左上角坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了
25、 touchDown(0, x, y); - 点击那个点 touchUp(0);endx, y = findImageInRegionFuzzy(/var/touchelf/a.bmp, 90, 100, 100, 200, 200, 0x000000); - 在区域(100,100)(200,200)范围找到第一个路径为/var/sdcar/a.bmp的图片, 精确度为90, 忽略图片中颜色为0x000000(黑色)的点, 将其左上角坐标保存到变量x和y中if x = -1 and y = -1 then - 如果找到了 touchDown(0, x, y); - 点击那个点 touchUp
26、(0);end snapshotScreen()函数说明: 全屏截图参数参数1 (字符串) : 保存截图的路径, 支持BMP格式和JPG格式, 根据文件名后缀智能判断参数2 (数字, 可选) : 图片尺寸缩放百分比, 有效范围为10100, 默认为100返回值无示例snapshotScreen(/mnt/sdcard/a.bmp); - 将全屏截图保存到路径为/mnt/sdcard/a.bmp的图片中, 格式为BMPsnapshotScreen(/mnt/sdcard/a.jpg, 50); - 将全屏截图保存到路径为/mnt/sdcard/a.jpg的图片中, 格式为JPG, 并且尺寸缩小为
27、原始尺寸的50% snapshotRegion()函数说明: 区域截图参数参数1 (字符串) : 保存截图的路径, 支持BMP格式和JPG格式, 根据文件名后缀智能判断参数2 (数字) : 区域左上角X坐标参数3 (数字) : 区域左上角Y坐标参数4 (数字) : 区域右下角X坐标参数5 (数字) : 区域右下角Y坐标参数6 (数字, 可选) : 图片尺寸缩放百分比, 有效范围为10100, 默认为100返回值无示例snapshotRegion(/mnt/sdcard/a.bmp, 100, 100, 200, 200); - 将区域(100,100)(200,200)的截图保存到路径为/mn
28、t/sdcard/a.bmp的图片中, 格式为BMPsnapshotRegion(/mnt/sdcard/a.jpg, 100, 100, 200, 200, 50); - 将区域(100,100)(200,200)的截图保存到路径为/mnt/sdcard/a.jpg的图片中, 格式为JPG, 并且尺寸缩小为原始尺寸的50% localOcrText()函数说明: 进行本地图片识别参数参数1 (字符串) : 语言包tessdata目录的路径(在下载语言包, 将解压后的tessdata目录复制到设备中)参数2 (字符串) : 语言类型eng : 英文语言类型chi_sim : 中文语言类型参数3
29、 (数字) : 待识别图片区域的左上角X坐标参数4 (数字) : 待识别图片区域的左上角Y坐标参数5 (数字) : 待识别图片区域的右下角X坐标参数6 (数字) : 待识别图片区域的右下角Y坐标参数7 (字符串, 可选) : 设置白名单, 只有白名单中的字符才会被识别返回值返回值1 (字符串) : 图片识别后得到的答案, 失败的话返回空字符串示例code = localOcrText(/mnt/sdcard/Touchelper/tessdata, - 语言包tessdata目录在设备中的路径 eng, - 语言类型为中文 100, - 图片左上角X坐标为100 100, - 图片左上角Y坐标为100 200, - 图片右下角X坐标为200 200); - 图片右下角Y坐标为200if code = then notifyMessage(识别失败);else notifyMessage(string
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1