加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有