1. 概述2. 用法2.1. 怎样安装?2.2. 怎样录制?2.3. 怎样播放?2.4. 怎样写一个脚本?2.5. 怎样加密脚本?2.6. 怎样从电脑上传脚本?2.7. 怎样购买授权?2.8. 怎样从商店中下载和购买脚本?2.9. 怎样将您的脚本发布在商店中?3. 脚本3.1. 基础3.2. 扩展函数3.2.1. touchDown3.2.2. touchMove3.2.3. touchUp3.2.4. tap3.2.5. homeButtonDown3.2.6. homeButtonUp3.2.7. rootDir3.2.8. usleep3.2.9. log3.2.10. alert3.2.11. vibrate3.2.12. screenshot3.2.13. screenshotRegion3.2.14. getScreenResolution3.2.15. getScreenSize3.2.16. getColor3.2.17. findColor3.2.18. findColorTap3.2.19. findImage3.2.20. findImageTap3.2.21. appRun3.2.22. appKill3.2.23. appIsActive
1. 概述
AutoTouch用来录制和回放您在移动设备上的各种触摸和点击操作,它还可以运行事先用Lua语言写好的脚本,通过模拟人的触摸操作,来实现更多意想不到的功能。您可以用它自动玩游戏打怪赚取金币、批量编辑照片、进行程序自动化测试或者自动登入邮箱等等。
现在AutoTouch已经具备了录制和回放大多数人类操作的能力,比如触摸,点击Home实体键,点击音量实体键,点击声音开关实体键、锁屏实体键等等。并且达到了精确和顺滑的效果。它还提供了诸如截屏、区域截屏、颜色查找、颜色匹配、图片匹配等一些列扩展函数,具备了更大可挖掘的潜力。结合这些奇异的能力,能限制您的只有想象力了。
2.用法
2.1. 怎样安装?
1.确保您已经添加了BigBoss源到Cydia中;2.在Cydia中搜索“AutoTouch”,找到并安装;3.如果之前未安装过“Activator”插件,则安装AutoTouch时会自动安装此插件,该插件用于手势控制。请勿卸载它,否则AutoTouch会被一并卸载。
2.2. 怎样录制?
1.在任何您想开始录制的界面,长按音量减键(或您设置的其它Activator控制动作),来弹出控制面板,控制面板上包含一个录制按钮和一个脚本列表;2.点击控制面板上的“录制”按钮,它将震动提示并开始录制;3.接下来就请做您想做的触摸或其它操作了,比如打怪等;4.当您想要停止录制时,长按音量减键(或前述的其它控制动作),直到弹出提示框显示“录制结束”,它会震动提示并停止;5.接下来您就可以到AutoTouch中查看、管理或者播放刚才录制的脚本了。脚本默认用创建时间作为名称,你可修改为更友好的名称.
2.3. 怎样播放?
1.在您希望开始播放的界面,长按音量减键(或您设置的其它控制动作)来调出控制面板;2.在控制面板上点击选择您想播放的脚本;3.通常接下来(除非您曾将此脚本设置为直接播放)会弹出播放设置对话框以询问循环播放次数、间隔和速度;4.点击“立即运行”后它将依据您刚才的设置立即进行播放,此时会有震动提示开始。播放完成后会自动停止并弹出对话框提示结束(您可在设置中关闭对话框提示)。您还可通过长按音量件键(或前述其它动作)来中断播放;5.如果您点击了“稍后运行”,它将进入“准备运行”的状态,在此状态中,可通过点击(不是长按,不可修改)音量减键来重复多次地启动或中断播放,且不会有任何询问对话框再来打断您。再次长按(或前述其它动作)来退出“准备播放”状态;6.您可在“播放设置”界面将脚本设为“直接播放”并为其设置默认的播放设置,这样当选择此脚本时将直接据此设置进行播放,不会再弹出播放设置对话框进行询问.
2.4. 怎样写一个脚本?
1.点击工具栏中间的“Action”按钮,选择“新建文件”即可打开脚本新建窗口;2.在脚本编辑界面编写代码;3.然后点击“保存”按钮并输入名称进行保存.
2.5. 怎样加密脚本?
1.在AutoTouch点击脚本,选择“加密”;2.输入加密密码,无需密码留空即可;3.点击确定即可完成加密,并生成一个同名但.lua.e结尾的加密文件.4.可以选择加密脚本进行播放,设有密码的根据提示输入密码即可.
2.6. 怎样从电脑上传脚本?
确保WIFI打开并与电脑处于同一局域网内,点击工具栏中间的“Action”按钮,然后选择“上传”来打开上传界面,如启动成功,界面上会显示连接地址;从电脑上用浏览器访问上一步得到的连接地址,即可在打开的界面进行上传.
2.7. 怎样购买授权?
点击“设置”界面的“授权”按钮来打开授权信息界面;当打开授权信息界面时会进行授权验证;如果授权验证失败,会显示支付按钮;点击支付按钮会跳转到浏览器窗口并打开支付页面,请在那里完成支付。用支付宝支付的用户请务必在支付页面的“付款说明”中粘贴设备序列号;当支付完成后,请在“设置”界面点击“授权”来验证;当授权被验证后,您将获得无限播放时间和全部功能.
2.8. 怎样从商店中下载和购买脚本?
您可以直接从商店中下载所有的脚本;有些脚本是经过密码加密的,你需要跟作者联系来购买密码;脚本下载后会存放在你的脚本列表中,您可以像使用其它脚本一样直接使用.
2.9. 怎样将您的脚本发布在商店中?
您可以将脚本发布在商店中,以分享或销售给其他人;如果只想分享脚本,可以直接上传.lua文件,如果不希望他人看到内容,可以进行无密码加密;如果想在商店中出售脚本,可以将脚本进行加密,并设置密码。这样需要的人会联系您购买密码.
3. 脚本
3.1. 基础
您可以从这里学习Lua语言的使用:Lua Official Reference Manual.
3.2. 扩展函数
扩展函数用于扩展Lua语言,使具备模拟人类操作手机的一些能力。还提供截屏、颜色查找、颜色匹配、图片匹配等能力。
3.2.1. touchDown(id, x, y)
在屏幕的(x, y)坐标按下.
参数id: 手指的编号,默认为0即可.x: 屏幕x坐标.y: 屏幕y坐标.返回值无示例touchDown(0, 100, 200); -- 在坐标(100, 200)处按下.
3.2.2. touchMove(id, x, y)
移动手指到(x, y)坐标.
参数id: 手指的编号,默认为0即可.x: 屏幕x坐标.y: 屏幕y坐标.返回值无示例touchDown(0, 100, 200); -- 在坐标(100, 200)处按下.touchMove(0, 200, 200); -- 移动手指到坐标(200, 200)处.
3.2.3. touchUp(id, x, y)
从(x, y)坐标抬起按下的手指.
参数id: 手指的编号,默认为0即可.x: 屏幕x坐标.y: 屏幕y坐标.返回值无示例touchDown(0, 100, 200); -- 在坐标(100, 200)处按下.touchMove(0, 200, 200); -- 移动手指到坐标(200, 200)处.touchUp(0, 200, 200); -- 在坐标(200, 200)处抬起按下的手指.
3.2.4. tap(x, y)
点击坐标点(x, y).
参数x: 屏幕x坐标.y: 屏幕y坐标.返回值无示例tap(100, 200); -- 点击坐标点(100, 200).
3.2.5. homeButtonDown()
按下Home实体键.
参数无返回值无示例homeButtonDown();-- 按下Home键.
3.2.6. homeButtonUp()
抬起按下的Home键.
参数无返回值无示例homeButtonUp();-- 抬起按下的Home键.
3.2.7. rootDir()
获得脚本存放的默认地址.
参数无返回值脚本存放的默认地址.示例local dirPath = rootDir();-- dirPath = "/var/mobile/Library/AutoTouch/Scripts/"
3.2.8. usleep(microseconds)
停顿若干个微秒,即1/1000000秒.
参数microseconds: 停顿多少微秒.返回值无示例usleep(1000000);-- 停顿1秒
3.2.9. log(logContent)
记录日志,可在日志界面查看。
参数logContent: 需要记录的日志内容.返回值无示例log("play here...");
3.2.10. alert(message)
弹出对话框显示指定内容.
参数message: 需要显示的内容.返回值无示例alert("Hello world!");
3.2.11. vibrate()
震动一次.
参数无返回值无示例vibrate(); -- 震动一次.
3.2.12. screenshot(filePath)
获取当前截屏并存在指定地址.
参数filePath: 截屏要存放的地址返回值无示例screenshot("/var/screenshot1.png");
3.2.13. screenshotRegion(filePath, x, y, width, height)
获取指定区域的截屏,并存放在指定地址.
参数filePath: 截屏要存放的地址x: 截屏区域左上角x坐标.y: 截屏区域左上角y坐标.width: 截屏区域的宽度.height: 解聘区域的高度.返回值无示例screenshotRegion("/var/screenshot2.png", 0, 0, 100, 100);-- 对(0, 0, 100, 100)区域进行截屏并存放在指定地址.
3.2.14. getScreenResolution()
获取屏幕分辨率.
参数无返回值width: 屏幕分辨率宽度.height: 屏幕分辨率高度.示例local w, h = getScreenResolution();-- 分辨率宽度是1136, 分辨率高度是640.
3.2.15. getScreenSize()
获取屏幕大小,这里是苹果坐标系的大小。视网膜屏就是分辨率除以二的值.
参数无返回值width: 屏幕宽度.height: 屏幕高度.示例local width, height = getScreenSize();-- iPhone 5:宽是320, 高是568
3.2.16. getColor(x, y)
在当前屏幕获取指定坐标位置的颜色值.
参数x: iOS坐标系中指定点的x坐标.y: iOS坐标系中指定点的y坐标.返回值rgb: 指定坐标点的rgb颜色值.示例local rgb = getColor(100, 200);alert("rgb:" .. rgb);-- rgb:16777215
3.2.17. findColor(rgb, count)
在当前屏幕获取所有匹配指定颜色的坐标点. 注意: 您应当这样使用find(0x0000ff, 5), 而非这样:find(rgb=0x0000ff, count=5), 这与findImage函数不同, 因为findImage的参数整体是一个table.
参数rgb: int类型的rgb值. (必需)count: 最多查找多少个点,默认是0,表示查找所有匹配点。如果是1,表示查出第一个即可,若是2表示查出前两个即可。查找的个数越少速度会越快. (可选).返回值locations: 找到的点的坐标。比如:{{x1, y1}, {x2, y2}, ...}.示例local result = findColor(0x0000ff, 2);for i, v in pairs(result) dolog("x:" .. v[1] .. "y:" .. v[2]);end
3.2.18. findColorTap(rgb, count)
该函数与findColor基本相同,区别在于findColorTap找到那些点并依次间隔0.016秒进行点击,并且不返回任何值.
参数rgb: int类型的rgb值. (必需)count: 最多查找多少个点,默认是0,表示查找所有匹配点。如果是1,表示查出第一个即可,若是2表示查出前两个即可。查找的个数越少速度会越快. (可选).返回值无示例findColorTap(0x0000ff, 2); -- 找到颜色为0x0000ff的前两个坐标点并依次间隔0.016秒点击它们.
3.2.19. findImage {imagePath, count, fuzzy, ignoreColors}
在当前屏幕查找匹配指定图片的区域,以table形式返回找到的所有区域的左上角坐标.
参数imagePath: 需要查找的图片的路径. (必需)count: 最多查找多少个区域,默认是0,表示查找所有匹配区域。如果是1,表示查出第一个即可,若是2表示查出前两个即可。查找的个数越少速度会越快. (可选).fuzzy: 查找的模糊度,默认是1,表示完全匹配,0.5表示匹配50%的像素点即可. (可选)ignoreColors: 在查找中需要无视的颜色值,以数组形式提供(table in lua). (可选).返回值locations: 匹配区域左上角坐标的数组. 比如: {{x1, y1}, {x2, y2}, ...}.示例-- 示例 1:local result = findImage {imagePath="/var/spirit.png", count=5};for i, v in pairs(result) dolog("x:" .. v[1] .. "y:" .. v[2]);end
-- 示例 2:local result = findImage {imagePath="/var/spirit.png", fuzzy=0.6};for i, v in pairs(result) dolog("x:" .. v[1] .. "y:" .. v[2]);end
-- 示例 3:local result = findImage {imagePath="/var/spirit.png", ignoreColors={0xffffff, 0x2b2b2b}};for i, v in pairs(result) dolog("x:" .. v[1] .. "y:" .. v[2]);end
-- 示例 4:local result = findImage {imagePath="/var/spirit.png", count=1, fuzzy=0.9, ignoreColors={0x0000ff}};for i, v in pairs(result) dolog("x:" .. v[1] .. "y:" .. v[2]);end
3.2.20. findImageTap {imagePath, count, fuzzy, ignoreColors}
该函数与findImage基本相同,区别在于findImageTap找到那些区域并依次间隔0.016秒进行点击,并且不返回任何值.
参数imagePath: 需要查找的图片的路径. (必需)count: 最多查找多少个区域,默认是0,表示查找所有匹配区域。如果是1,表示查出第一个即可,若是2表示查出前两个即可。查找的个数越少速度会越快. (可选).fuzzy: 查找的模糊度,默认是1,表示完全匹配,0.5表示匹配50%的像素点即可. (可选)ignoreColors: 在查找中需要无视的颜色值,以数组形式提供(table in lua). (可选).返回值无示例-- 示例 1:findImageTap {imagePath="/var/spirit.png", count=5};
-- 示例 2:findImageTap {imagePath="/var/spirit.png", fuzzy=0.6};
-- 示例 3:findImageTap {imagePath="/var/spirit.png", ignoreColors={0xffffff, 0x2b2b2b}};
-- 示例 4:findImageTap {imagePath="/var/spirit.png", count=1, fuzzy=0.9, ignoreColors={0x0000ff}};
3.2.21. appRun(appIdentifier)
用appIdentifier启动指定应用.
参数appIdentifier: 应用标识,如"com.apple.mobilesafari". (必需)返回值无示例appRun("com.apple.mobilesafari");-- 运行safari
3.2.22. appKill(appIdentifier)
用appIdentifier关闭指定应用.
参数appIdentifier: 应用标识,如"com.apple.mobilesafari". (必需)返回值无示例appKill("com.apple.mobilesafari");-- 关闭运行着的safari
3.2.23. appIsActive(appIdentifier)
检查指定应用是否处于活跃和打开的状态.
参数appIdentifier: 应用标识,如"com.apple.mobilesafari". (必需)返回值ifAppIsActive: bool类型结果.示例b = appIsActive("com.apple.mobilesafari");-- 检查App打开状态