lua基础语法-作者篇(lua语言)
(2017-03-02 10:58:24)
标签:
it |
分类: lua |
2 脚本语言 触摸精灵使用Lua语言作为底层脚本语言,支持Lua
5.2版本的所有语法与基本库函数,并在Lua语言的基础上添加了一些扩展函数,用于发送触摸事件、找图、找色等高级功能的实现。
2.1 基本语法
用户可参考Lua的或者其他资料来学习以下基本语法:注释变量与类型运算符赋值条件控制循环控制函数定义库函数等等
2.2 扩展函数logDebug() 输出调试信息到系统日志参数
参数1:调试信息(string)
返回值
无
示例
logDebug("hello"); -- 输出"hello"到系统日志
mSleep() 进行毫秒级别延迟参数
参数1:毫秒数(number)
返回值
无
示例
mSleep(1000); -- 延迟1秒
notifyMessage() 以文字提示框的方式通知用户参数
参数1:提示文字(string)
返回值
无
示例
notifyMessage("hello"); --
在屏幕上显示"hello"
notifyVibrate() 以震动方式通知用户参数
参数1:毫秒数(number)
返回值
无
示例
notifyVibrate(1000); -- 让设备震动1秒
notifyVoice() 以播放音频的方式通知用户参数
参数1:音频路径(string)
返回值
无
示例
notifyVoice("/mnt/sdcard/a.mp3"); --
播放路径为"/mnt/sdcard/a.mp3"的音频
touchDown() 发送手指按下事件参数
参数1:手指ID, 范围0~128,
用于标识一个手指,在后续的touchMove()和touchUp()中需要使用(number)参数2:X坐标
(number)参数3:Y坐标 (number)
返回值
无
示例
touchDown(0, 100, 100); -- ID为0的手指在坐标为(100, 100)的点按下touchUp(0); --
ID为0的手指抬起
touchMove() 发送手指移动事件参数
参数1:touchDown()时传入的手指ID(number)参数2:X坐标 (number)参数3:Y坐标
(number)
返回值
无
示例
touchDown(0, 100, 100); -- ID为0的手指在坐标为(100, 100)的点按下touchMove(0,
200, 100); -- ID为0的手指滑动到坐标为(200, 100)的点touchUp(0); --
ID为0的手指抬起
touchUp() 发送手指抬起事件参数
参数1:touchDown()时传入的手指ID(number)
返回值
无
示例
touchDown(0, 100, 100); -- ID为0的手指在坐标为(100, 100)的点按下touchUp(0); --
ID为0的手指抬起
keyDown() 发送物理按键按下事件参数
参数1:物理键名称,Android触摸精灵现在支持的有'HOME'、'BACK'(string)
返回值
无
示例
keyDown('HOME'); -- HOME键按下keyUp('HOME'); --
HOME键抬起
keyUp() 发送物理按键抬起事件参数
参数1:物理键名称,Android触摸精灵现在支持的有'HOME'、'BACK'(string)
返回值
无
示例
keyDown('HOME'); -- HOME键按下keyUp('HOME'); --
HOME键抬起
getScreenResolution() 获取当前屏幕分辨率参数
无
返回值
返回1:宽度(number)返回2:高度(number)
示例
w, h = getScreenResolution(); --
将屏幕宽度和高度分别保存在变量w、h中notifyMessage(string.format("%d,%d\n", w, h));
-- 将宽度和高度用提示框显示到屏幕上
getScreenColorBits() 获取当前屏幕色彩位数参数
无
返回值
返回1:色彩位数(number)
示例
c = getScreenColorBits(); --
将屏幕色彩位数保存在变量c中notifyMessage(string.format("%d\n", c)); --
将色彩位数用提示框显示到屏幕上
getColor() 获取指定像素的颜色参数
参数1:X坐标 (number)参数2:Y坐标 (number)
返回值
返回1:色彩位数(number)
示例
c = getColor(100, 100); -- 将坐标为(100,100)的点的颜色保存在变量c中if c ==
0x0000ff then -- 如果该点颜色为0x0000ff(纯蓝色)
touchDown(0, 100, 100); -- 那么点击该坐标
touchUp(0);end
getColorRGB() 获取指定像素颜色的R、G、B三个值参数
参数1:X坐标 (number)参数2:Y坐标 (number)
返回值
返回1:R(number)返回2:G(number)返回3:B(number)
示例
r, g, b = getColorRGB(100, 100); --
将坐标为(100,100)的点的颜色的R、G、B分别保存在变量r、g、b中if r == 0x00 and b == 0x00 and
g == 0xff then -- 如果该点颜色为0x0000ff(纯蓝色)
touchDown(0, 100, 100); -- 那么点击该坐标
touchUp(0);end
findColor() 全屏找色参数
参数1:要找的颜色(number)
返回值
返回1:X坐标,如果没找到返回-1(number)返回2:Y坐标,如果没找到返回-1(number)
示例
x, y = findColor(0x0000ff); --
在全屏范围找到第一个颜色为0x0000ff的点,将其坐标保存到变量x和y中if x ~= -1 and y ~= -1 then --
如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);end
findColorFuzzy() 全屏模糊找色参数
参数1:要找的颜色(number)参数2:精确度 (number)
返回值
返回1:X坐标,如果没找到返回-1(number)返回2:Y坐标,如果没找到返回-1(number)
示例
x, y = findColorFuzzy(0x0000ff, 90); --
在全屏范围找到第一个颜色为0x0000ff的点,精确度为90%,将其坐标保存到变量x和y中if x ~= -1 and y ~= -1
then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);end
findColorInRegion() 区域找色参数
参数1:要找的颜色
(number)参数2:区域左上角X坐标(number)参数3:区域左上角Y坐标(number)参数4:区域右下角X坐标(number)参数5:区域右下角Y坐标(number)
返回值
返回1:X坐标,如果没找到返回-1(number)返回2:Y坐标,如果没找到返回-1(number)
示例
x, y = findColorInRegion(0x0000ff, 100, 100, 200, 200); --
在区域[(100,100)(200,200)]范围找到第一个颜色为0x0000ff的点,将其坐标保存到变量x和y中if x ~= -1
and y ~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);end
findColorInRegionFuzzy() 区域模糊找色参数
参数1:要找的颜色 (number)参数2:精确度
(number)参数3:区域左上角X坐标(number)参数4:区域左上角Y坐标(number)参数5:区域右下角X坐标(number)参数6:区域右下角Y坐标(number)
返回值
返回1:X坐标,如果没找到返回-1(number)返回2:Y坐标,如果没找到返回-1(number)
示例
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格式(string)参数2:(可选)指定图片中透明颜色(number)
返回值
返回1:X坐标,如果没找到返回-1(number)返回2:Y坐标,如果没找到返回-1(number)
示例
x, y = findImage("/mnt/sdcard/a.bmp"); --
在全屏范围找到第一个路径为"/mnt/sdcar/a.bmp"的图片,将其左上角坐标保存到变量x和y中if x ~= -1 and y
~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点 touchUp(0);endx, y
= findImage("/mnt/sdcard/a.bmp", 0xffffff); --
在全屏范围找到第一个路径为"/mnt/sdcar/a.bmp"的图片,忽略图片中颜色为0xffffff(黑色)的点,将其左上角坐标保存到变量x和y中if
x ~= -1 and y ~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);end
findImageFuzzy() 全屏模糊找图参数
参数1:要找的图片的路径,只支持BMP格式(string)参数2:精确度
(number)参数3:(可选)指定图片中透明颜色(number)
返回值
返回1:X坐标,如果没找到返回-1(number)返回2:Y坐标,如果没找到返回-1(number)
示例
x, y = findImageFuzzy("/mnt/sdcard/a.bmp", 90); --
在全屏范围找到第一个路径为"/mnt/sdcar/a.bmp"的图片,精确度为90,将其左上角坐标保存到变量x和y中if x ~=
-1 and y ~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);endx, y = findImageFuzzy("/mnt/sdcard/a.bmp", 90,
0xffffff); --
在全屏范围找到第一个路径为"/mnt/sdcar/a.bmp"的图片,精确度为90,忽略图片中颜色为0xffffff(黑色)的点,将其左上角坐标保存到变量x和y中if
x ~= -1 and y ~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);end
findImageInRegion() 区域找图参数
参数1:要找的图片的路径,只支持BMP格式(string)参数2:区域左上角X坐标(number)参数3:区域左上角Y坐标(number)参数4:区域右下角X坐标(number)参数5:区域右下角Y坐标(number)参数6:(可选)指定图片中透明颜色(number)
返回值
返回1:X坐标,如果没找到返回-1(number)返回2:Y坐标,如果没找到返回-1(number)
示例
x, y = findImageInRegion("/mnt/sdcard/a.bmp", 100, 100, 200, 200);
--
在区域[(100,100)(200,200)]范围找到第一个路径为"/mnt/sdcar/a.bmp"的图片,将其左上角坐标保存到变量x和y中if
x ~= -1 and y ~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);endx, y = findImageInRegion("/mnt/sdcard/a.bmp", 100,
100, 200, 200, 0xffffff); --
在区域[(100,100)(200,200)]范围找到第一个路径为"/mnt/sdcar/a.bmp"的图片,忽略图片中颜色为0xffffff(黑色)的点,将其左上角坐标保存到变量x和y中if
x ~= -1 and y ~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);end
findImageInRegionFuzzy() 区域模糊找图参数
参数1:要找的图片的路径,只支持BMP格式(string)参数2:精确度
(number)参数3:区域左上角X坐标(number)参数4:区域左上角Y坐标(number)参数5:区域右下角X坐标(number)参数6:区域右下角Y坐标(number)参数7:(可选)指定图片中透明颜色(number)
返回值
返回1:X坐标,如果没找到返回-1(number)返回2:Y坐标,如果没找到返回-1(number)
示例
x, y = findImageInRegionFuzzy("/mnt/sdcard/a.bmp", 90, 100, 100,
200, 200); --
在区域[(100,100)(200,200)]范围找到第一个路径为"/mnt/sdcar/a.bmp"的图片,精确度为90,将其左上角坐标保存到变量x和y中if
x ~= -1 and y ~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);endx, y = findImageInRegionFuzzy("/mnt/sdcard/a.bmp",
90, 100, 100, 200, 200, 0xffffff); --
在区域[(100,100)(200,200)]范围找到第一个路径为"/mnt/sdcar/a.bmp"的图片,精确度为90,忽略图片中颜色为0xffffff(黑色)的点,将其左上角坐标保存到变量x和y中if
x ~= -1 and y ~= -1 then -- 如果找到了 touchDown(0, x, y); -- 点击那个点
touchUp(0);end
keepScreen()
开启/关闭屏幕保持。当开启屏幕保持时,后续的找图、找色等函数不会重新获取屏幕图像,而是使用开启屏幕保持之前的屏幕图像;当关闭屏幕保持时,后续的找图、找色等函数会每次都重新获取屏幕图像。适当使用此函数可以优化脚本运行效率参数
参数1:是否启用屏幕保持(boolean)
返回值
无
示例
keepScreen(true); -- 开启屏幕保持if getColor(100, 100) == 0x000000 or
getColor(200, 200) == 0x000000 then --
进行2次取色,由于启用了屏幕保持,这2次取色不会重新获取2次屏幕图像,这样可以提高性能 notifyMessage("yes");
-- 如果(100,100)和(200,200)坐标有一个颜色为黑色,输出"yes"else -- 否则
notifyMessage("no"); -- 输出"no"endkeepScreen(false); --
关闭屏幕保持
snapshotScreen() 全屏截图参数
参数1:保存截图的路径(string)
返回值
无
示例
snapshotScreen("/mnt/sdcard/a.bmp"); --
将全屏截图保存到路径为"/mnt/sdcard/a.bmp"的图片中
snapshotRegion() 区域截图参数
参数1:保存截图的路径(string)参数2:区域左上角X坐标(number)参数3:区域左上角Y坐标(number)参数4:区域右下角X坐标(number)参数5:区域右下角Y坐标(number)
返回值
无
示例
snapshotRegion("/mnt/sdcard/a.bmp", 100, 100, 200, 200); --
将区域[(100,100)(200,200)]的截图保存到路径为/mnt/sdcard/a.bmp的图片中
copyText() 复制文字到系统剪贴板,以便后续粘贴参数
参数1:要粘贴的文字,中英文都支持(string)
返回值
无
示例
copyText("你好") -- 复制字符串“你好”到系统剪贴板
getDeviceID() 获取设备串号参数
无
返回值
设备串号
示例
deviceID = getDeviceID(); --
将设备ID保存到deviceID变量中
getNetTime() 获取网络时间参数
无
返回值
网络时间,
该时间与lua的os.time()函数一样,返回的是UTC时间1970年1月1日0时0分0秒到现在流逝的秒数,可以配合os.date()转换成方便阅读的格式。返回-1表示不能连接网络时间服务器
示例
time = getNetTime();if time ~= -1 then tt = os.date("*t", time); if
tt.year > 2014 and tt.month > 2 and tt.day > 15 and
tt.hour > 12 and tt.min > 30 then
notifyMessage("当前时间超过了2013年2月15日12点30分"); endelse
notifyMessage("请连接网络");end
rotateScreen() 旋转屏幕的坐标体系,
后续的找图、找色、截图、触摸动作都会使用新的坐标体系。参数
0: 保持原本的坐标体系。对于IOS设备来说,此时HOME键在下方时的屏幕左上角为原点。90:
坐标系统向右转90度。对于IOS设备来说,此时HOME键在右方时的屏幕左上角为原点-90:
坐标系统向左转90度。对于IOS设备来说,此时HOME键在左方时的屏幕左上角为原点180:
坐标系统倒立。对于IOS设备来说,此时HOME键在下方时的屏幕左上角为原点
返回值
无
示例
rotateScreen(90); -- 旋转坐标体系向右90度,大多数横屏游戏使用此坐标体系.touchDown(0, 100,
100); --
发送触摸动作,此时点击的点使用新的坐标体系.touchUp(0);
appRun() 打开指定软件参数
参数1: 想要打开的软件的包名(string)
返回值
无
示例
appRun("com.android.browser"); --
打开系统自带浏览器
appKill() 关闭指定软件参数
参数1: 想要关闭的软件的包名(string)
返回值
无
示例
appKill("com.android.browser"); --
关闭系统自带浏览器
cloudOcrText() 连接haoi23远程答题平台进行图片识别参数
参数1: 密码串参数2: 题目类型参数3: 待识别图片区域的左上角X坐标(number)参数4:
待识别图片区域的左上角Y坐标(number)参数5: 待识别图片区域的右下角X坐标(number)参数6:
待识别图片区域的右下角Y坐标(number)参数7: 超时时间,范围为20-600秒(number)
返回值
图片识别后得到的答案,失败的话返回空字符串
示例
code = cloudOcrText("name|PASSWORDAD9EFBD3F233265DF9400E6A", --
密码串为"name|PASSWORDAD9EFBD3F233265DF9400E6A" "1004", --
题目类型为"1004"(4位数字字母) 100, -- 图片左上角X坐标为100 100, -- 图片左上角Y坐标为100 200,
-- 图片右下角X坐标为200 200, -- 图片右下角Y坐标为200 600); -- 超时时间为600秒if code ==
"" then notifyMessage("识别失败");else
notifyMessage(string.format("识别成功: %s", code));end