LTE中X2A∪X接口是什么意思切换成功率低,如何分析定位

触动精灵脚本开发手册开发手册 触动精灵Windows 平台按 Ctrl + F 打开快捷搜索Mac 平台按 command + F 打开快捷搜索※右侧文本列表可以找到全部手册目录
前言& & & &是一款模拟手机触摸、按键操作的软件,通过制作脚本,可以让触动精灵代替双手,自动执行一系列触摸、按键操作。触动精灵简单、易用,不需要掌握任何编程知识就可以录制出功能强大的脚本;还可以使用编程知识,编写出功能更为复杂,交互更为灵活的脚本;只要能够在手机上完成的人为操作,触动精灵都可以代替完成,不仅省力,而且高效。& & & &触动精灵采用 Lua 脚本语言作为底层语言,支持 Lua 5.2.3 版本的所有语法与基本函数,并在其的基础上添加了一些扩展函数,用于取色、找色、找图、发送触摸事件等高级功能的实现。用户在阅读本函数说明前,请参考 Lua 的,学习以下基本语法:& & & &
- 变量与类型
- 条件、循环控制
- 函数定义
- ……& & & &本说明仅供初等文化水平以上的、了解计算机编程基本原理的个体学习与参考,并不适用于零基础的编程入门者学习编程基本知识。严禁用于商业以及非法目的,严禁转载、抄袭、未经许可地引用。
为了便于解释和描述,本说明中采用了一些非专业的描述与形容方法(如:number),敬请理解。因编写校对仓促,如有错误欢迎及时指正,本文中的示例仅供函数参考,不要直接用于脚本中。重要提示:
Lua 官方手册:
Lua 中文开发手册:
Lua 基础简明教程:
触动精灵的脚本开发、存储过程必须使用 UTF-8 文本编码,如果您出现脚本中文无法正常显示与处理,请在您使用的编辑器或 IDE 中设置文本编码为 UTF-8,谢谢。学习前的准备越狱及 root 常识
在学习脚本开发之前,首先要具备一些关于 iOS 越狱和安卓 root 的知识,以及触动精灵的常用信息
文档链接:
看了上面的文档,你可以具备以下知识:
什么样的手机适合用来做脚本开发
拿到一台越狱手机之后应该做什么才能避免白苹果和报错
Cydia 不见了或者已安装界面空白该怎么办
为什么安装插件总是报错呢
Lua 基础简明教程
首先你需要了解 Lua 这门语言的一些基础知识,什么是循环,什么是函数,布尔型和数值型分别是什么意思,才有可能看得懂下面的教程和手册。
文档地址:
脚本开发取色技巧
新手在学习使用触动精灵开发脚本的时候,总会进入一些误区,或者会有一些迷惑的点,觉得无从下手,本文总结了一些自己在学习过程中遇到的问题和经验技巧,欢迎大家一起交流分享。
文档链接:
看了上面的文档,你可以具备以下知识:
透明背景图、动图、带动画的界面应该怎么取色
找色和找图哪个更好用
函数封装是什么
脚本报错了怎么办
小白学触动零基础视频教程
如果你没有任何编程基础,可以先看一下零基础教学视频:
看了上面的文档,你可以具备以下知识:
deb 插件安装方法
平刷插件 Cydia Eraser
SSH 命令工具 putty
触动精灵的安装使用及常识
抓色器和编辑器的使用及常识
同样的脚本为什么有的手机运行异常
showUI 返回值的调用
showUI 应该怎么写才简洁好用
大漠字库工具的用法
触动精灵开发者指南
由于触动精灵在线文档数量较多,很多人不知道如何查询,现建立此文档做为索引,其中会补充一些软件使用的常用信息。
触动精灵旗下目前有四款软件:触动精灵(iOS/Android)、帮你玩商城(iOS/Android)、小精灵(iOS/Android)、企业版(iOS/Android)。
触动精灵适合开发者和有中控开发能力的工作室使用
帮你玩脚本商城适合开发玩家脚本的开发者和普通脚本用户使用
小精灵适合有图标和包名自定义需求的开发者和工作室使用
企业版适合有批量控制设备需求的工作室使用
文档地址:
触动产品功能对比
自定义图标
开发者平台
触动精灵iOS
30元/台/年
购买API自行开发
iOS/Android
触动精灵安卓
购买API自行开发
iOS/Android
触动小精灵
11元/台/月
购买API自行开发
iOS/Android
帮你玩商城
iOS/Android
触动企业版
38元/台/年
iOS/Android
安卓小精灵有免费版,但不能使用网络模块和高级函数库
安卓企业版测试期收费:0.1 元/台/年
如何查看更多文档在文档右侧栏顶部点击文档分类菜单栏按钮,即可查看触动精灵所有在线文档。
脚本开发相关工具& & & &工欲善其事,必先利其器,在学习触动精灵脚本编写前我们需要下载安装一些辅助工具来完成脚本编写,包含但不限于以下工具:触动精灵 iOS使用教程:
官方源地址:
测试源地址:
脚本存放路径:/var/mobile/Media/TouchSprite/lua
默认资源路径:/var/mobile/Media/TouchSprite/res
脚本日志路径:/var/mobile/Media/TouchSprite/log
配置文件路径:/var/mobile/Media/TouchSprite/config触动精灵 Android使用教程:
下载地址:
脚本存放路径:/sdcard/TouchSprite/lua
默认资源路径:/sdcard/TouchSprite/res
脚本日志路径:/sdcard/TouchSprite/log
配置文件路径:/sdcard/TouchSprite/config
iOS插件文件路径:/sdcard/TouchSprite/plugin
Android插件文件路径:data/data/com.touchsprite.android/files/plugin ※安卓不同机型路径有差别,请用userPath函数获取路径注意事项
有些函数不支持低版本触动精灵,请仔细阅读函数说明并尽量保持触动精灵客户端为最新版。
测试版为不稳定版本,为避免不必要的麻烦,请勿大规模安装。
测试版和正式版的 Bundle ID 不同,不能跨源覆盖安装或直接升级,请卸载之后再安装另一个源的版本。
iOS 11 系统的设备,原 TouchSprite 文件夹下新增 plugin_ios11 快捷方式,连接到 usr/bin/tsplugin
如果系统是 iOS 11 则 tsp 自带 so 文件释放到该路径但 lua 文件释放路径保持不变
如果开发者想要手动导入 so 文件,也需要放到 usr/bin/tsplugin 目录下
脚本编辑器:TouchSprite Studio
支持函数自动补全、函数提示、关键字高亮、文件传送、远程运行、自动缩进等常用功能,已内置所有至最新 2.3.6 版本触动精灵扩展函数,推荐使用。
下载地址:
使用手册:
视频教程:
抓色器:TSColorPicker
一个趁手的抓色器可以让你的脚本开发过程变的轻松愉快,在此强烈推荐触动抓色器,快捷抓点、一键生成代码、远程抓屏,让你如虎添翼。具体使用方法请阅读压缩包内附带的说明(远程抓屏功能需使用触动精灵iOS v2.1.5 以上版本)。
下载地址:
使用手册:
视频教程:
已兼容的模拟器雷电模拟器、猩猩模拟器、网易MUMU模拟器、夜神模拟器、海马玩模拟器、逍遥模拟器、51 模拟器
模拟器使用教程:
从系统兼容和资源占用角度考虑,推荐使用雷电模拟器、夜神模拟器。点击触摸函数:touchDown、touchUp、touchMove 触摸点击、滑动
函数名称:触摸按下、抬起、移动
函数功能:通过按下、抬起、移动动作发送触摸事件。
touchDown(index , x , y);
touchMove(index , x,
touchUp(index , x , y);
返回值:无
手指序号(可省略)
屏幕横坐标
屏幕纵坐标
脚本实例:
快速划动touchDown(150, 550);
--在坐标 (150, 550)按下mSleep(30);touchMove(150, 600);
--移动到坐标 (150, 600),注意一次滑动的坐标间隔不要太大,不宜超过 50 像素mSleep(30);touchUp(150, 600);
--在坐标 (150, 600) 抬起连续划动touchDown(150, 550);
--在坐标 (150, 550) 按下for i = 0, 200, 10 do
--使用for循环从起始点连续横向移动到终止点
touchMove(150 + i, 550);
mSleep(10);
--延迟endtouchUp(150 + 200, 550);
--在坐标 (350, 550) 抬起多点触控touchDown(1, 200, 400);
--手指 1 在坐标 (200, 400) 按下touchDown(2, 300, 500);
--手指 2 在坐标 (300, 500) 按下mSleep(50);for i = 1, 100, 1 do
--使用 for 循环使两只手指同时分离
touchMove(1, 200 - i, 400 - i);
touchMove(2, 300 + i, 500 + i);
mSleep(10);endtouchUp(1, 200 - 100, 400 - 100);
--抬起手指 1touchUp(2, 300 + 100, 500 + 100);
--抬起手指 2封装一个点击函数function click(x, y)
touchDown(x, y)
mSleep(30)
touchMove(x, y) -- 安卓部分机型单点不生效的情况下可以加上此句
touchUp(x, y)endclick(100, 200) --点击坐标 100,200 位置方形渐开线init(1)mSleep(1000)local x = 1010 --起始坐标 xlocal y = 698
--起始坐标 ylocal v = 30
--两点间距离touchDown(x, y)mSleep(100)for var = 1,20 do
for _i = 1,2 do
for i = 1,10 do
touchMove(x, y)
mSleep(20)
v = v * (-1.05)endtouchUp(x, y)圆形渐开线init(1)mSleep(1000)local x0 = 1010 --起始坐标 xlocal y0 = 698
--起始坐标 ylocal rr = 20 --设置递增半径 local l = 10 --设置点间距 local p = 0 --初始化角度
local r = 30 --设置首圈半径local rn = 10 --设置圈数touchDown(x0, y0)mSleep(100)for var = 1,rn do
while p & math.pi * 2 do
x = x0 + r * math.cos(p)
y = y0 - r * math.sin(p)
touchMove(x, y)
mSleep(10)
p = p + l/r
r = r + rr endtouchUp(x0, y0)安卓点击滑动失效处理方法
在部分安卓应用程序中的HTML5页面中,出现脚本能够点击,但点击没有后续反应的问题。此问题目前可以通过以下写法来解决:
os.execute("input mouse tap x y"),其中 x y 为坐标值
os.execute("input mouse swipe x1 y1 x2 y2")--滑动,x1,y1为滑动初始坐标,x2,y2为滑动结束坐标
如果以上命令还是不生效可以用下面的 API 方法代替 mouse 进行尝试:
touchnavigation
touchscreen
举例: os.execute("input keyboard tap 100 100")
注意事项:
需要注意的是在使用 touchDown、touchMove、touchUp 函数时,中间一定要插入一定的延时,建议大于 20 毫秒,否则可能会出现点击无效等异常情况。
使用滑动函数时,新手常犯的错误就是两点之间滑动距离过大,请注意touchDown、touchMove 的坐标间隔不宜超过 50 像素。
非多点触控可省略手指 id
新手使用点击、随机点击、直线或角度滑动等相关函数请参考
名词解析:
手指序号,用于多点触控的支持。标记多只手指,来分别控制它们的移动。
屏幕坐标,横坐标为 x,纵坐标为 y,单位为像素。例如,iPhone 4 与 iPhone 4S 的屏幕分辨率 为 640 * 960,则其最大横坐标为 640,最大纵坐标为 960。
for 循环是 Lua 基本语法,属于循环控制。
函数:catchTouchPoint 获取用户点击坐标
函数名称:获取用户点击坐标
函数功能:调用该函数后,触动精灵将等待用户完成一次或多次屏幕点击,并返回点击的坐标。
x,y = catchTouchPoint();
返回值:number x,y
ret = catchTouchPoint(touchCount);
返回值:table类型 ret
用户点击屏幕的横坐标
用户点击屏幕的纵坐标
当touchCount参数有效时,将返回一个包含所有点击坐标的table
touchCount
所需获取的 点/坐标 个数(需引擎版本 iOS v2.2.4,Android v1.1.9以上支持)
脚本实例:dialog("一秒后接收用户一次点击", 0);mSleep(1000);x,y = catchTouchPoint(); dialog("x:"..x.." y:"..y, 0);--获取多个点击坐标dialog("一秒后接收用户三次点击", 0);mSleep(1000);local ret = catchTouchPoint(3);for i = 1, #ret do
dialog("第"..i.."次点击的位置:"..i..",x="..ret[i].x..",y="..ret[i].y);end注意事项:
部分安卓模拟器不支持该函数。
此函数将阻止脚本继续运行, 一直等待用户完成屏幕点击。
此函数获取到的坐标为竖屏坐标,横屏情况请自行转换。
本函数有较小的延迟,连续点击时,请勿点击过快。
在 iOS 引擎版本 iOS v2.2.4,Android v1.1.9 以上中可接收多个点击坐标并以 table 形式返回。
图色类及屏幕相关函数:init 初始化
函数名称:初始化
函数功能:脚本运行前必须调用,以设置设备方向及坐标系。
init(bid,rotate);
返回值:无
选填,目标程序的Bundle ID,填写 “0” 时自动使用当前运行的应用
必填,屏幕方向,0 - 竖屏,1 - home 键在右边,2 - home 键在左边
脚本实例:init(0)
-- iOS 设备以 Home 键在下方时的屏幕左上角为坐标系原点(0,0),iOS 7 以上系统有效;安卓设备以当前屏幕默认截图方向进行初始化init(1);
--iOS 设备以当前应用 Home 键在右边初始化,即以 Home 键在右侧时的横屏左上角为屏幕坐标原点(0,0);安卓设备以屏幕默认截图方向向左旋转90°进行初始化
注意事项:
安卓系统不同设备初始的截图方向有所不同,编写脚本前请用截图函数确认设备的默认方向。
iOS6 系统如果填写 bid 参数的话,请在使用 runApp 函数之后再使用此函数,才能获取到正确的当前应用坐标系。
此函数可在脚本运行过程中多次调用已改变屏幕方向。
如在脚本中未指定屏幕方向,系统将默认为竖屏或初始方向。
安卓设备根据机型初始方向有区别,需要开发者自行调试,0 - 初始方向,1 - 初始方向向左旋转 90°,2 - 初始方向向右旋转 90°
参考资料:
Bundle ID 的获取方法
1. 在触动精灵客户端的 更多 -& 应用ID查询 中能查看到应用程序的 Bundle ID;
2. iOS 使用 iFile、PP助手等软件可查看应用文件夹下的 Info.plist,其中的 CFBundleIdentifier 即为该应用的 Bundle ID。
3. 使用 ,前台运行要获取 Bundle ID 的应用,运行此函数并用 diolag、toast、nLog 函数显示返回值。
函数:getDeviceOrient 获取手机、应用屏幕方向(仅支持 iOS)
函数名称:获取手机、应用屏幕方向
函数功能:用于获取当前手机方向和应用方向
支持版本:引擎版本 iOS v2.3.9 以上,Android 暂不支持
函数方法:
orient = getDeviceOrient()
返回值:number orient.app,orient.dev
orient.app
前台应用方向
orient.dev
手机屏幕方向
脚本实例:local orient = getDeviceOrient()dialog("屏幕方向:" .. orient.dev .. "\n应用方向:" .. orient.app, 0)注意事项:
屏幕方向,0 - 3,和 init 方向一致
该函数获取时间长,不建议频繁调用,否则可能会影响脚本效率
函数:setDeviceOrient 设置屏幕方向(仅支持 iOS)
函数名称:设置屏幕方向
函数功能:设置当前脚本运行时的屏幕方向。
支持版本:引擎版本 iOS v2.3.4 以上,Android 暂不支持
setDeviceOrient(number rotate);
返回值:无
0 - 竖屏;1 - Home键在右边;2 - Home键在左边
函数:getScreenSize 获取屏幕分辨率
函数名称:获取屏幕分辨率,取分辨率
函数功能:用于获取设备屏幕的分辨率,用来判断坐标系的使用。
width,height = getScreenSize();
返回值:number width,height
获取到的屏幕宽度
获取到的屏幕高度
脚本实例:
根据分辨率判断脚本是否适配width, height = getScreenSize();if width == 640 and height == 1136 then
--iPhone SE, 5, 5S, iPod touch 5dialog("iPhone SE, 5, 5S, iPod touch 5")elseif width == 640 and height == 960 then
--iPhone 4,4S, iPod touch 4dialog("iPhone 4,4S, iPod touch 4")elseif width == 320 and height == 480 then
--iPhone 非高分屏dialog("iPhone 非高分屏")elseif width == 768 and height == 1024 then
--iPad 1,2, mini 1dialog("iPad 1,2, mini 1")elseif width == 1536 and height == 2048 then
--iPad 3,4,5, mini 2dialog("iPad 3,4,5, mini 2")elseif width == 1080 and height == 1920 thendialog("小米 4,华为荣耀 6p 等")elseif width == 720 and height == 1280 thendialog("红米 note2 等")elseif width == 768 and height == 1280 thendialog("魅蓝等")elseif width == 800 and height == 1280 thendialog("三星 N5100 等")elseif width == 480 and height == 800 thendialog("酷派 8017-T00 等")end注意事项:
统一为 iOS 竖屏(Home 键在下方时)、安卓初始方向屏幕的宽度和高度。
部分安卓设备存在无法获取到屏幕分辨率的问题,需要在脚本中判断如果返回值小于 0 则指定一个固定的宽高。
函数:setScreenScale 坐标缩放
函数名称:坐标缩放
函数功能:用于对屏幕坐标进行缩放,可直接影响点击、取色、找色函数中的坐标参数。
支持版本:引擎版本 iOS v2.2.7,Android v1.2.8 以上
setScreenScale(flag,
width, height);
返回值:无
true - 打开,false - 关闭
基准屏幕的宽度
基准屏幕的高度
脚本实例:setScreenScale(true, 750, 1334)
--以 750,1334 分辨率为基准坐标进行缩放--[[
当此函数打开时,将影响点击、取色、单点模糊找色函数
]]setScreenScale(false) --关闭缩放注意事项:
当此函数打开时,受影响的函数为点击和单点找色函数:touchDown touchUp touchMove getColor getColorRGB findColorInRegionFuzzy snapshot
多点找色函数不受此函数影响
当两个设备宽高比相差较大时,此函数转换后的效果较差
函数:keepScreen 保持屏幕
函数名称:保持屏幕,保持图像
函数功能:在脚本中保持当前屏幕内容不变,多次调用取色、找色、截图、找图等函数时,直接调用保持的内容。该函数为优化类函数,能够为大量的静态图像处理函数提供性能优化。
keepScreen(flag);
返回值:无
脚本实例:
遍历屏幕区块keepScreen(true);
--打开保持屏幕,当参数为 true 时启用屏幕保持,运行到该函数时内存中的屏幕图像保持在这一时刻for k = 1, 640, 10 do
for j = 1, 960, 10 do
--格式化为十六进制文本
color = string.format("%X", getColor(k, j));
--输出到本地日志
nLog("("..k..", "..j..") Color: "..color..".");
endendkeepScreen(false);
--关闭保持屏幕,当参数为 false 时关闭屏幕保持,释放内存中的屏幕图像,以备下一次继续保持。 注意事项:
据不完全统计,与不使用该函数相比,使用此函数会使普通屏上脚本取色速率提升 100 倍,高分屏上脚本取色速率提升 50 倍。在执行大量静态图像操作时,请务必使用该函数优化脚本性能。
该函数一般用于画面变动节奏较慢,但需要根据大量取色、找色来完成计算和操作的脚本中,例如"天天爱消除"、"天天星连萌"这样的游戏。
名词解析:
静态图像处理,指可在某一状态下屏幕内容保持到内存(不影响显示),对其进行进一步的 多次分析。否则,每次使用图像类函数,都将截取一次屏幕内容。
保持开关,逻辑型只有两种属性:true 为真,false 为假。
注意事项:
当使用 keepScreen(true); 时启用屏幕保持,运行到该函数时内存中的屏幕图像保持在这一时刻。
当使用 keepScreen(false); 时关闭屏幕保持,释放内存中的屏幕图像,以备下一次继续保持。
函数:getColor、getColorRGB 获取屏幕某点颜色值
函数名称:获取颜色、获取颜色RGB 、取色
函数功能:获取某一点的颜色值(RGB)、颜色 R,G,B 值。
color = getColor(x, y);
整型 color
color_r, color_g, color_b = getColorRGB(x, y);
整型 color_r, color_g, color_b
将获取颜色值的屏幕横坐标
将获取颜色值的屏幕纵坐标
该点的十进制颜色值RGB
color_r, color_g, color_b
该点颜色的 RGB 值
脚本实例:
如果某点符合某颜色则点击color = getColor(100, 100);
--获取(100,100)的颜色值,赋值给 color 变量if color == 0xffffff then
--如果该点的颜色值等于 0xffffff
touchDown(100, 100);
--那么点击该点
mSleep(30);
touchUp(100, 100);end--亦可写作if getColor(100, 100) == 0xffffff then
touchDown(100, 100);
mSleep(30);
touchUp(100, 100);end如果某点的颜色与某颜色相似则点击r,g,b = getColorRGB(100,100);
--获取(100, 100)的颜色值,赋值给 color 变量if r & 200 and g & 150 then
--如果红色强度大于 200,绿色强度小于 150
touchDown(100,100);
--那么点击该点
mSleep(30);
touchUp(100,100);end封装一个单点模糊比色函数function isColor(x,y,c,s)
--封装函数,函数名 isColor
local fl,abs = math.floor,math.abs
s = fl(0xff*(100-s)*0.01)
local r,g,b = fl(c/0x10000),fl(c%0x10000/0x100),fl(c%0x100)
local rr,gg,bb = getColorRGB(x,y)
if abs(r-rr)&s and abs(g-gg)&s and abs(b-bb)&s then
return true
endend--下面为函数用法if isColor(963,
961, 0x7b593f,90) then -- 90 为模糊值,值越大要求的精确度越高
touchDown(963, 961)
mSleep(50)
touchUp(963, 961)end多点模糊比色
在实际游戏脚本制作中,很多界面单靠 1 个点不容易进行准确的判断,这里封装一个配合 TABLE 使用的多点模糊比色函数来实现精确判断:function multiColor(array,s)
s = math.floor(0xff*(100-s)*0.01)
keepScreen(true)
for var = 1, #array do
local lr,lg,lb = getColorRGB(array[var][11],array[var][12])
local r = math.floor(array[var][13]/0x10000)
local g = math.floor(array[var][14]%0x10000/0x100)
local b = math.floor(array[var][15]%0x100)
if math.abs(lr-r) & s or math.abs(lg-g) & s or math.abs(lb-b) & s then
keepScreen(false)
return false
keepScreen(false)
return trueend--用法g_t_Table = {
52, 0xefdccf},
50, 0xefd8d0},
76, 0xe9d1c5},
74, 0xefdcd1},
62, 0xf1ddd1},
{ 2146, 1080, 0x893824},
{ 1840, 1082, 0x593724},}if multiColor(g_t_Table,90) then
touchDown(100,100)
mSleep(50)
touchUp(100,100)end名词解析:
参数 s 为模糊度,范围 0 - 100,一般使用 90 即可。
实例中的 TABLE 格式可使用触动精灵抓色器生成。
注意事项:
getColor 与 getColorRGB 的作用是一样的,只不过前者返回单变量,后者返回 R, G, B 三变量。
如直接使用例子中的代码进行测试,请在全部代码之前,加入 2 ~ 3 秒延迟;或者使用循环语句。 因为脚本开始运行时,会出现音量提示遮盖在前台,影响获取颜色。
特别注意,getColor 函数获得的颜色值十六进制文本中,实际顺序为 RGB。
新手找色可使用触动精灵函数扩展库中的和,更加简单方便。
参考资料 如何获取屏幕上某点的颜色
在你想在设备上截图,iOS 同时按下电源键和 Home 键,安卓为 电源键 和 音量键-即可进行截图(此时屏幕会闪一下)。
使用可方便的获取所需坐标点的颜色信息,推荐使用。
常见颜色表:
R,G,B值,即代表红(Red)、绿(Green)、蓝(Blue)三个通道的颜色强度。
整型,指的是可以用十、十六、八进制指定的数据类型。使用十六进制符号,必须加上 0x。
赋值是 Lua 基本语法,操作符为"="(一个等号)。
等于是 Lua 基本语法,属于条件控制,操作符为"=="(两个等号)。新手常常将等于写作赋值,从而导致编译出现错误。
函数:findColorInRegionFuzzy 区域模糊找色
函数名称:区域找色、模糊找色、区域模糊找色
函数功能:在指定区域中,寻找符合指定颜色的坐标,支持模糊查找。
x, y = findColorInRegionFuzzy( color,
返回值:number x, y
将要找的十六进制颜色值
寻找精度,范围:1 ~ 100,当是100时为完全匹配
找色区域左上角顶点屏幕横坐标
找色区域左上角顶点屏幕纵坐标
找色区域右下角顶点屏幕横坐标
找色区域右下角顶点屏幕纵坐标
找到的点坐标,如未找到则返回 -1,-1
脚本实例:
1.精确寻找指定区域中,指定颜色的坐标,并按下
--寻找符合条件的点x, y = findColorInRegionFuzzy(0x112233, 100, 50, 50, 300, 300); if x ~= -1 and y ~= -1 then
--如果在指定区域找到某点符合条件
touchDown(x, y);
--那么单击该点
mSleep(30);
touchUp(x, y);else
--如果找不到符合条件的点
dialog("未找到符合条件的坐标!",0);end2.模糊查找指定区域中,尽可能接近指定颜色的点,并按下for deg = 100, 1, -1 do
--使用 for 循环不断降低精确度
x, y = findColorInRegionFuzzy(0xffffff, deg, 50, 50, 300, 300);
if x ~= -1 and y ~= -1 then
--如果在指定区域找到某点符合条件
nLog("在模糊度:"..deg.."下找到一个相似的颜色,坐标:"..x..":"..y)
touchDown(x, y);
--那么单击该点
mSleep(30)
touchUp(x, y);
--并跳出循环
endend注意事项:
未找到则返回 (-1, -1) ,所以找到时 x, y 均不等于 -1,~= 为不等于操作符,是 Lua 基本语法, 属于逻辑控制。
通过不断降低模糊查找精确度的方法在指定区域查找到的不一定是最接近指定颜色的点,该代码应用过程中,建议使用"保持屏幕"减少性能损耗,参见""一章。
函数:findImageInRegionFuzzy 区域模糊找图
函数名称:区域找图、模糊找图、区域模糊找图
函数功能:在指定区域中,寻找指定的图案,返回其左上角顶点坐标,支持模糊查找。
支持版本:引擎版本 iOS v1.0,Android v2.1.0以上
x, y = findImageInRegionFuzzy(picpath,
返回值: x, y
将要寻找的图片文件名((Android 仅支持 png 格式))
寻找精度,范围:1 ~ 100,当是 100 时为完全匹配
找色区域左上角顶点屏幕横坐标
找色区域左上角顶点屏幕纵坐标
找色区域右下角顶点屏幕横坐标
找色区域右下角顶点屏幕纵坐标
忽略的颜色值(透明色) 若无请填 0
找图类型,默认不写为 RGB 找图,更多请看注意事项
找到的图片的左上角顶点坐标,如未找到则返回 -1,-1
脚本实例:
精确寻找指定区域中,指定图片的位置--寻找符合条件的图片(假设图片的背景颜色为白色)x, y = findImageInRegionFuzzy("test_alpha.png", 90, 0, 0, 320, 480, 0xffffff);if x ~= -1 and y ~= -1 then
--如果在指定区域找到某图片符合条件
touchDown(x, y);
--那么单击该图片
mSleep(30)
touchUp(x, y);else
--如果找不到符合条件的图片
dialog("未找到符合条件的坐标!",0);end注意事项:
以下找图几种 type 方式:
type为空-RGB找图,适用于静态画面,找图速度快,兼容性一般
type为1-二值化找图,适用于所有画面,找图速度慢,兼容性好
type为2-二值化找图,适用于静态画面,找图速度快,兼容性好
Android 仅支持 png 格式图片。
iOS 默认图片路径为 /var/mobile/Media/TouchSprite/res,Android 为 /mnt/sdcard/TouchSprite/res(参数中无需填写完整路径),自建目录请填写绝对路径。
忽略的颜色值指将要寻找的图片的背景颜色,即在屏幕画面上不匹配寻找对象的背景颜色。
若该函数找图不理想可使用,几种找图方式可配合使用。
参数 type 为 1 需引擎版本 iOS v2.3.6-7 以上支持,type为 2 需要引擎版本 iOS v2.3.7 以上支持。
函数:findMultiColorInRegionFuzzy 区域多点找色
函数名称:多点找色,区域多点找色
函数功能:在指定区域,根据颜色以及其周边点的颜色,寻找符合条件的点的坐标,支持模糊查找。
x, y = findMultiColorInRegionFuzzy(color, posandcolor, degree, x1, y1, x2, y2);
返回值: x, y
欲寻找的参照点颜色
posandcolor
周边点颜色参数
寻找精度,范围:1 ~ 100,当是 100 时为完全匹配
找色区域左上角顶点屏幕横坐标
找色区域左上角顶点屏幕纵坐标
找色区域右下角顶点屏幕横坐标
找色区域右下角顶点屏幕纵坐标
选填,0 - 8,代表找色方向,支持版本详见注意事项
选填,参照点的偏色,支持 iOS v2.4.1,Andriod v2.3.5.4 以上版本,例如 main = 0x101010(十六进制)
选填,周边点的偏色,支持 iOS v2.4.1,Andriod v2.3.5.4 以上版本,例如 list = 0x202020(十六进制)
返回符合条件的参照点的坐标,如未找到则返回 -1,-1
基础用法:
当我们使用“区域模糊找色”函数时,常常会因为屏幕上有大量符合指定颜色的点而找不到 需要的坐标。该函数通过在寻找到一个符合指定颜色 color 的坐标后,进一步确认其周边点坐标的方式,来确定准确目标。例如,现在我们在图像上找到了我们需要的一个按钮,这个按钮的图案是不变的,但是它的整体位置却会在整个屏幕上变化,现在我们想要在脚本运行时得到其坐标。
我们首先找到一个点:
这个点的颜色为 0x181F85,坐标为 (268, 802)。
记录下来,接着找这个按钮上的另外一个点:
这个点的颜色为 0x00BBFE,坐标为 (297, 803),相对于第一个点的坐标为 (29, 1)。 记录下来,接着找这个按钮上的第三个点和第四个点。
第三个点的颜色为 0x0B6BBE,坐标为 (371, 798),相对于第一个点的坐标为 (103, -4)。
第四个点的颜色为 0x150972,坐标为 (333, 811),相对于第一个点的坐标为 (65, 9)。
现在我们找到了需要的三个点:
(268, 802)
(297, 803)
(371, 798)
(333, 811)
现在我们可以把它写成多点找色的格式了:--多点找色--在屏幕上以左上角坐标 (0,0) 和右下角坐标 (639, 959)确定的区域(即全屏)范围内寻找符合偏移范围和颜色的3个坐标点x, y = findMultiColorInRegionFuzzy(0x181F85, "29|1|0x00BBFE,103|-4| 0x0B6BBE,65|9|0x150972", 100, 0, 0, 639, 959); dialog(x..","..y, 0)那么返回的(x, y)就应该是(268,802)了。即使这个按钮平移了,这个点的坐标变了,也可以寻找到其准确位置。高阶用法:
多方向找色规则:
orient 不填或 orient = 0 表示包括基准点在内的所有参照点都必须在查找范围之内 ,orient = 1 - 8 表示使用 8 种不同的找色方向。
只要写了 orient 参数,那么找色方向就会根据 init() 设置方向旋转,一直保持以当前设置的屏幕方向左上角为初始点。
orient = 1,左上角到右下角,纵向开始找色,先找到 a 顶点。
orient = 2,左上角到右下角,横向开始找色,先找到 b 顶点。
orient = 3,右上角到左下角,横向开始找色,先找到 c 顶点。
以此类推。
完整演示代码、image、多点找色示例图:
多方向找色方法:x,y = findMultiColorInRegionFuzzy( 0x000000, "0|0|0x000000", 95, x1, y1, x2, y2,
{ orient = 1 })--支持版本:iOS 3.0.0-118,Android 2.3.5 以上偏色用法:--另外一种偏色模式,引擎版本 iOS v2.4.1,Andriod v2.3.5.4 以上支持--main 为参照点 0xffffff 的偏色,list 为周边点的偏色,如果想对每一个周边点单独偏色,在每一个偏色后面加上偏色值即可,如 "0|0|0x1ac819|0x202020"x, y = findMultiColorInRegionFuzzy(0xffffff,"0|0|0x1ac819,-4|-208|0x18cb76,3|58|0x21cc79", 90, x, y, x0, y0,
{ main = 0x101010, list = 0x202020 } )--main 及 list 参数暂不支持 Androiddialog(x..","..y, 0)注意事项:
posandcolor 参数中的坐标为相对坐标。
多点找色的代码可直接用触动精灵取色工具生成,其使用方法参见图文教程。
颜色值的十六进制文本中,其顺序为 RGB。
相对于第一个点的坐标,即用这个点的横坐标、纵坐标分别减去第一个点的横坐标、纵坐标,可以为负数。
使用此函数时精度参数设置过低,会导致性能大幅下降。
引擎版本 iOS v2.4.5-9,v3.0.0-118 以上版本,如果 orient = 1 - 8 按方向进行查找,只要目标点在查找范围内,不需要基准点须在查找范围之内。
引擎版本 Android v2.3.5 以上版本,如果 orient = 1 - 8 按方向进行查找,Android v2.3.5.4 以上版本支持 orient = 0。
函数:findMultiColorInRegionFuzzyExt 高级区域多点找色
函数名称:高级多点找色,高级区域多点找色
函数功能:在指定区域,根据颜色以及其周边点的颜色,寻找所有符合条件的点的坐标,支持模糊查找。
支持版本:引擎版本 iOS v1.0,Android v1.2.8 以上
point = findMultiColorInRegionFuzzyExt(color, posandcolor, degree, x1, y1, x2, y2);
返回值:table类型 point
欲寻找的参照点颜色
posandcolor
周边点颜色参数
寻找精度,范围:1 ~ 100,当是 100 时为完全匹配
找色区域左上角顶点屏幕横坐标
找色区域左上角顶点屏幕纵坐标
找色区域右下角顶点屏幕横坐标
找色区域右下角顶点屏幕纵坐标
选填,高阶用法,详见
选填,0 - 8,代表找色方向,支持版本详见注意事项
选填,参照点的偏色,支持 iOS v2.4.1,Andriod v2.3.5.4 以上版本,例如 main = 0x101010(十六进制)
选填,周边点的偏色,支持 iOS v2.4.1,Andriod v2.3.5.4 以上版本,例如 list = 0x202020(十六进制)
以 table 形式返回所有符合条件的参照点的坐标,如未找到则返回的 table 为空
返回的 table 为以下形式:table = {
{x = 100,y = 110},
{x = 200,y = 210},
{x = 300,y = 310},
...}脚本实例:
基础用法:point = findMultiColorInRegionFuzzyExt( 0xcf0000, "-37|3|0x|20|0xeba62d,1|54|0xf2b054,28|22|0x8a5707", 90, 97, 220, 903, 701)if #point ~= 0 then
--如返回的table不为空(至少找到一个符合条件的点)
for var = 1,#point do
nLog(point[var].x..":"..point[var].y)
endend偏色用法:--另外一种偏色模式,引擎版本 iOS v2.4.1,Andriod v2.3.5.4 以上支持--main 为参照点 0xffffff的偏色,list 为周边点的偏色,如果想对每一个周边点单独偏色,在每一个偏色后面加上偏色值即可,如 "0|0|0x1ac819|0x202020"point = findMultiColorInRegionFuzzyExt(0xffffff,"0|0|0x1ac819,-4|-208|0x18cb76,3|58|0x21cc79", 90, x, y, x0, y0,
{ main = 0x101010, list = 0x202020 } )if #point ~= 0 then
--如返回的 table 不为空(至少找到一个符合条件的点)
for var = 1,#point do
nLog(point[var].x..":"..point[var].y)
endend多点方向用法:x,y = findMultiColorInRegionFuzzyExt( 0x000000, "0|0|0x000000", 95, x1, y1, x2, y2,
{ orient = 1 })注意事项:
posandcolor 参数中的坐标为相对坐标。
多点找色的代码可直接用触动精灵取色工具生成,其使用方法参见图文教程。
颜色值的十六进制文本中,其顺序为 RGB。
相对于第一个点的坐标,即用这个点的横坐标、纵坐标分别减去第一个点的横坐标、纵坐标,可以为负数。
使用此函数时精度参数设置过低,会导致性能大幅下降。
引擎版本 iOS v2.4.5-9,v3.0.0-118 以上版本,如果 orient = 1 - 8 按方向进行查找,只要目标点在查找范围内,不需要基准点须在查找范围之内。
引擎版本 Andriod v2.3.5.4 以上版本,如果 orient = 0 - 8 按方向进行查找。
函数:findImage 高级区域找图(仅支持 iOS)
函数名称:区域找图、高级区域找图
函数功能:在指定区域中,寻找指定的图案,返回其左上角顶点坐标。
支持版本:引擎版本 iOS v2.3.0 以上
x, y = findImage( picpath, x1, y1, x2, y2, alpha);
返回值:number x, y
将要寻找的图片文件名
找色区域左上角顶点屏幕横坐标
找色区域左上角顶点屏幕纵坐标
找色区域右下角顶点屏幕横坐标
找色区域右下角顶点屏幕纵坐标
误差值,此参数值越低找图越严格,默认为 ,最低为0,当写0时为完全匹配,此参数可省略
找到的图片的左上角顶点坐标,如未找到则返回 -1,-1
脚本实例:
1.精确寻找指定区域中,指定图片的位置
--寻找符合条件的图片snapshot('test.png',1,1,55,55)
--截图到资源文件夹x, y = findImage("test.png", 0, 0, 120, 480);--在(0,0)到(120,480)寻找刚刚截图的图片if x ~= -1 and y ~= -1 then
--如果在指定区域找到某图片符合条件
toast(x..y);
--显示坐标else
--如果找不到符合条件的图片
toast('没有找到图片!');
end注意事项:
此函数推荐与 snapshot 截图函数配合使用,成功率较高。
匹配精度建议每次加减 1000000,此参数值越低匹配精度越高
默认图片路径为 /var/mobile/Media/TouchSprite/res(参数中无需填写完整路径),自建目录请填写相对路径。
若该函数找图不理想可使用,几种找图方式可配合使用。
函数:snapshot 截图
函数名称:截图
函数功能:截取屏幕中指定区域的图像并生成指定格式的图片文件
snapshot( picname,
x1, y1, x2, y2, quality);
返回值:无
截图保存的文件名
找色区域左上角顶点屏幕横坐标
找色区域左上角顶点屏幕纵坐标
找色区域右下角顶点屏幕横坐标
找色区域右下角顶点屏幕纵坐标
仅支持 iOS,当截图格式选为 jpg 时,可用此参数控制图片质量,此参数值为大于 0 且小于等于 1 的值
脚本实例:
iOS 示例snapshot("test.png", 0, 0, 639, 1135); --以 test 命名进行截图--全屏截图(iPhone 5, 5S),并以当前日期为文件名保存current_time = os.date("%Y-%m-%d", os.time());snapshot(current_time..".png", 0, 0, 639, 1135); --以时间戳命名进行截图snapshot(current_time..".jpg", 0, 0, 639, 1135, 0.5); --使用 jpg 格式截图,并设置图片质量为 0.5Android 示例
--全屏截图(以小米 4 为例),并以当前日期为文件名保存current_time = os.date("%Y-%m-%d", os.time()); --以时间戳命名进行截图w,h = getScreenSize();-- 右下角顶点坐标最大为 (宽度最大值-1, 高度最大值-1)snapshot(current_time..".png", 0, 0, w-1, h-1); 注意事项:
Android 系统保存图片支持 png 及 jpg 格式,不可以设置质量;iOS 系统保存图片的格式可为 bmp, jpg, png,因为 png 是 iOS 中最常见的格式,所以推荐选择 png。
截图时,如使用全屏截图,右下角顶点坐标最大为 ((宽度最大值 - 1, 高度最大值 - 1),否则 iOS 系统会出现越界错误,安卓系统截出的图会是纯白色的。
默认图片路径请使用 userPath 函数获取,具体使用方法请参阅 ,自建目录请填写相对路径,文件相同将会被覆盖
本文 iOS 实例中 os.date 与 os.time 为 Lua 基本库函数,请查阅附录 Lua 操作系统函数库。
".." 为字符串连接操作符,可以将字符串变量、常量连接在一起。
本文 iOS 实例中 640 * 1136 为 iPhone 5,5S 等设备的分辨率,实际使用中请根据运行设备替换为对应值。
quality 参数仅在引擎版本高于 iOS v2.0.9 时方可使用。
当引擎版本高于 iOS v2.2.5-1,Android v2.0.5 时,四个坐标参数省略,默认截取全屏图像。
函数:imageOperMerge 图片合并
函数名称:图片合并
函数功能:将几张图片合并生成一张新图片。
支持版本:引擎版本 iOS v2.3.4
Android 2.2.6 以上
flag = imageOperMerge(pictb, string path, number type, quality);
返回值:number flag
需合并图片的文件名列表,支持使用绝对路径
生成新图片的文件名,支持使用绝对路径
合并类型,0 - 横向合并;1 - 竖向合并
当生成图片格式为 jpg 时,可控制图片质量,范围[0 - 1]
0 - 成功;1 - 失败;2 - 失败;3 - 失败
脚本实例:snapshot("1.png",100,100,200,200)
--截取屏幕上左上角坐标为 (100,100),右下角坐标为 (200,200) 区域,宽高皆为 100 像素的图片,图片名为 1.pngsnapshot("2.png",100,200,200,300)
--截取屏幕上左上角坐标为 (100,200),右下角坐标为 (200,300) 区域,宽高皆为 100 像素的图片,图片名为 2.pngsnapshot("3.png",100,300,200,400)
--截取屏幕上左上角坐标为 (100,300),右下角坐标为 (200,400) 区域,宽高皆为 100 像素的图片,图片名为 3.pngimageOperMerge({"1.png","2.png","3.png"},"4.jpg",0,0.5)
--将上面截取的三张图片合成为一张并命名为 4.jpg注意事项:
iOS 系统默认图片路径为 /var/mobile/Media/TouchSprite/res,自建目录请填写相对路径
当脚本要上传到帮你玩、企业版和小精灵平台时,请使用 userPath 函数代替 /res 之前的目录使之自动获取。
开发辅助类函数:initLog、wLog、closeLog 日志函数
函数名称:初始化日志、写日志、关闭日志
函数功能:配置日志输出地址与方式、写出或发送日志、关闭日志输出连接。
initLog(name, flag);
wLog(name, contents);
closeLog(name);
返回值:无
0 - 输出到文件名
1 - 输出到带时间戳的文件名
2 - 异步发送到服务器
3 - 同步发送到服务器
日志文件名或服务器地址与端口 不带后缀,自动添加.log
可选输出方式
日志内容,在该参数中,加入"[DATE]"自动替换为当前可读时间
脚本实例:
1.写到本地日志initLog("test", 0);
--初始化日志 test.log,把 0 换成 1 即生成形似 test_.log 的日志文件 wLog("test","[DATE] Test_1 OK!!!"); --写入日志,日志内容:当前时间 Test_1 OK!!!mSleep(500);
--间隔时间 500 毫秒wLog("test","[DATE] Test_2 OK!!!");closeLog("test");
--关闭日志2.发送服务器日志initLog("192.168.1.1", 2);
--初始化日志,并以异步方式发送;把 2 换成 3
即为同步发送wLog("192.168.1.1", "[DATE] Test OK!!!");
--将日志发送到 192.168.1.1closeLog("192.168.1.1");
--关闭服务器连接3.多日志记录initLog("test_1", 0);
--初始化日志 test_1.loginitLog("test_2", 0);
--初始化日志 test_2.logwLog("test_1","[DATE] Test_1 OK!!!"); mSleep(500);wLog("test_2","[DATE] Test_2 OK!!!"); closeLog("test_1");closeLog("test_2");注意事项
flag参数设置为 2 和 3,需要引擎版本 iOS v1.7.0,Android v1.0 及以上版本支持,并需要配合触动精灵日志服务端 使用,要求设备与运行服务端的 PC 处于同一网段。
该函数支持多日志记录,即可以定义并初始化多个日志用于分类存放。
此函数一般用于脚本开发阶段,若脚本开发完成,只需注释掉 initLog 即可。
日志的编码为 UTF-8,请使用支持 UTF-8 编码的编辑器查看。
函数:sysLog 系统日志(仅支持 iOS10 以下系统)
函数名称:系统日志
函数功能:输出系统日志 NSLog
sysLog(contents);
返回值:无
需要显示的日志内容
-- 打开命令行 切换到adb文件目录下 输入 adb logcat -s touchsprite sysLog("start")os_type = getOSType()if os_type == "android" then
sysLog("Android")else
sysLog("iOS")endsysLog("end")注意事项:
该函数将日志输出到系统级日志中,iOS 系统请使用 iTools 或 XCode 查看,Android 系统使用adb工具查看,过滤标识为 touchsprite。
当使用同步消息传送时,脚本需等待日志已经到达服务端才继续执行下面的指令。
当使用异步消息传送时,调用者在发送消息以后可以不用等待响应,可以接着处理其他任务。 即发送日志无需等待发送完成即可继续执行。
注释的操作符形式为 --...... 或 --[[......]] ,可将用于说明的代码写入脚本以便开发时理解。
函数:nLog 远程日志
函数名称:远程日志
函数功能:输出日志到触动精灵 IDE 编辑器(TS Studio)
支持版本:引擎版本 iOS v2.1.6,Android v1.3.0 以
nLog(string contents);
返回值:无
需要显示的日志内容
脚本实例:for var = 1,50 do
nLog("[DATE]"..var);--在编辑器的日志输入界面查看
mSleep(100);end注意事项:
该函数需要脚本编辑器 v1.0.3 以上支持。
此函数仅作为调试用途,由触动精灵脚本编辑器发起的脚本运行将会接收到 nLog 回传信息,其他方式运行的脚本将不会触发 nLog 函数。
使用该函数无需设置日志接收端 IP 地址。
请在编辑器的日志输出面板查看该函数返回的日志信息。
当脚本中频繁使用此函数时,由于日志是异步发送的,如果编辑器接收到的日志内容没有按照顺序显示,是正常现象。此问题可以通过在 nLog 之间插入toast 函数解决。
脚本控制函数:mSleep 延时
函数名称:等待延迟,延时
函数功能:发送系统等待事件。
mSleep(numberinterval);
返回值:无
单位为毫秒,脚本暂停执行的时间长度
脚本实例:
1.延迟1秒和1分钟mSleep(1000);
--延迟1秒钟mSleep(60 * 1000)
--此函数不适合用于长时间的精确计时,如长时间的精确计时请使用 os.time2.按住 3 秒不松手touchDown(200, 300);
--按下mSleep(3000);
--延迟 3 秒touchUp(200, 300);
--抬起注意事项:
延迟函数的使用与各类函数的使用息息相关,尤其是触摸类函数。脚本一般是用来模拟人在界面上的操作,因此要考虑人在各种情况下的延迟、界面加载时的响应时间。
延迟间隔不可过短,当 interval &= 50 ms 时,延迟精确度大幅下降,当 interval &= 16 ms 时,实际延迟约在 16 ms左右。
请勿将此函数用于长时间的精确计时。
1 秒 (s) = 1000 毫秒 (ms)。
函数:lua_exit 退出脚本
函数名称:退出脚本、结束函数
函数功能:直接终止脚本。
lua_exit();
返回值:无
脚本实例:
弹出许可协议,若不同意则退出脚本ret = dialogRet("许可协议\n协议内容", "同意", "不同意", 0, 0);if ret == 0 then
--如果按下"同意"按钮
toast("您选择了同意")else
toast("您选择了不同意,脚本退出运行")
lua_exit();
--否则退出脚本
mSleep(10)
mSleep(10)
mSleep(10)
--lua的机制是调用此函数之后的下一行结束,如果不希望出现此情况可以在调用函数之后加入一行无意义代码。end注意事项:
需要注意的是调用该函数时,脚本并非立即终止执行,脚本将会在你调用此函数之后的下一行结束,如果不希望出现此情况可以在调用函数之后加入一行无意义代码即可。
函数:lua_restart 重载脚本
函数名称:重新加载运行脚本
支持版本:iOS 引擎版本 v2.2.1,Android v1.1.9 以上
lua_restart();
返回值:无
脚本实例:dialog("重载脚本", 0)lua_restart()dialog("执行不到这里", 0)注意事项:
此函数作用相当于停止脚本后重新运行脚本。
函数:luaExitIfCall 来电暂停
函数名称:来电暂停
函数功能:设置电话拨入时停止脚本运行的标识。
支持版本:iOS 引擎版本 v1.0,Android v2.0.9 以上
luaExitIfCall(flag);
返回值:无
状态标识 true - 开启来电暂停;false - 关闭来电暂停
脚本实例:luaExitIfCall(true); --当有电话拨入时,检查来电暂停状态标识,若为 true,则立即终止脚本;若为 false,则继续运行脚本[此处输入链接的描述][26]init(0);注意事项:
该函数在脚本中可使用多次,以调整配置。
当有电话拨入时,检查来电暂停状态标识,若为 true,则立即终止脚本;若为 false,则继续运行脚本。
引擎版本 iOS v2.2.4 以上版本将停止改为暂停。
函数:checkScriptAuth 脚本类型和授权
函数名称:脚本类型和授权
函数功能:获取脚本的格式类型、授权状态和脚本 ID
支持版本:iOS 引擎版本 v2.2.6,Android v2.0.3 及以上;帮你玩 iOS v1.0.1 以上
tsp = checkScriptAuth();
返回值:table型 tsp
返回当前脚本的类型: lua tsp p4u
返回当前脚本的授权状态: 0 - 未授权;1 - 已授权;2 - 试用中
返回当前脚本的 ID(此 ID 唯一,可在开发者平台查看)
脚本实例:tsp = checkScriptAuth()nLog(tsp.type)
--输出脚本类型
tsp p4utsp = checkScriptAuth()nLog(tsp.id)
--输出 tspid 号,脚本必须为 tsp 否则返回空值tsp = checkScriptAuth()if tsp.auth == 2 then --试用字段 iOS 只支持 v2.4.1,Android v2.2.4 以上版本
dialog("脚本状态:试用中")elseif tsp.auth == 1 then
dialog("脚本状态:已激活")else
dialog("脚本状态:未激活")end系统相关函数:dialog 提示框
函数名称:对话框,弹窗,提示框
函数功能:弹出提示信息。
dialog(text,
返回值:无
提示信息,将在设备屏幕上以弹窗形式显示
提示信息显示的时间,不限时间请填0
脚本实例:
1.欢迎使用dialog("欢迎使用触动精灵!", 5); --Android 系统在部分设备上需要在系统设置里开启悬浮窗权限方可正常使用此函数mSleep(1000);dialog("本脚本仅供演示对话框的用法。\n提示信息可以换行。",0);注意事项:
time 参数时间一般在 2 秒以上,否则出现时间太短看不清楚。
该函数仅供呈现提示信息给用户,不可接收返回值。
该函数所产生的提示窗口显示的时候会影响当前屏幕取色,请在合理的位置使用该函数。
关于转义字符:\r\n 为换行,请查阅 Lua 转义字符表。
在引擎版本 iOS v2.2.4 以上版本中,time 参数可省略,如省略将按 0 处理。
安卓系统在部分设备上需要在系统设置里开启方可正常使用此函数。
函数:toast 提示
函数名称:HUD 提示,吐司提示
函数功能:在屏幕底部以悬浮层形式显示字符串信息
支持版本:iOS 引擎版本 v2.2.4 以上
toast(text, time);
返回值:无
提示信息,将在设备屏幕上以 HUD 形式显示
停留时间(单位:秒),当触动精灵版本高于 v2.3.0 时有效
脚本实例:
1.欢迎使用toast("欢迎使用触动精灵!"); mSleep(3000);-- 建议 toast 函数后面添加 3 秒间隔否则可能显示错误toast("本脚本仅供演示toast函数效果。\n提示信息可以换行。");注意事项:
该函数所产生的提示信息将以 HUD 形式显示在屏幕上,该函数所产生的提示信息可能会影响当前屏幕的找色,请合理使用。
函数:dialogRet 带按钮的对话框
函数名称:带按钮的对话框
函数功能:弹出提示信息,并提供 1 ~ 3 个按钮给用户选择。
choice = dialogRet(string text, string cbtn, string btn1, string btn2, number time);
返回值:number choice
默认按钮标题,不需要请填 ""
可选按钮 1,不需要请填 "" 或 0
可选按钮 2,不需要请填 "" 或 0
提示信息显示的时间,不限时间请填 0
返回用户按下按钮的序号 cbtn - 0;btn1 - 1;btn2 - 2
脚本实例:
1.选择性别(双选)choice = dialogRet("请选择您的性别:", "男", "女", "", 0);2.选择性别(三选)choice = dialogRet("请选择您的性别:", "取消", "男", "女", 0);if choice == 0 then
dialog("您放弃了选择",0);
mSleep(1000);elseif choice == 1 then
dialog("你好,帅哥",0);
mSleep(1000);elseif choice == 2 then
dialog("你好,美女",0);
mSleep(1000);end3.请阅读许可协议dialogRet("这里是许可协议或广告,强制阅读 30 秒不可消除。", "", "", "", 30);注意事项:
请勿将三个按钮都设置为空,再将 time 参数设置为 0,这样将造成出现无法消失也没有按钮的对话框,造成设备无法进行其它操作,只能重启(已在 2.3.6 版本中修复)。
值得一提的是,cbtn 总是对话框的最右边或者最下面的按钮。
参数中的 0 是数字,不是文本 "0"。
当 time 参数不为 0 并且用户没有选择,超时将返回 3。
函数:dialogInput 参数对话框函数名称:参数对话框
函数功能:弹出提示信息,并提供 1 ~ 2
个编辑框给用户输入。
引擎版本 iOS v2.3.7,Android v2.3.4 以上
:text_a,text_b = dialogInput(title,format, btn);
返回值: text_a, text_b
编辑框中浅色的提示文字,如果需要两个编辑框,则将提示文字用"#"分割
确认按钮标题
text_a,text_b
返回用户输入的文本
脚本实例:
1.单编辑框 - 输入姓名text_a = dialogInput("请输入您的姓名", "在这里输入姓名", "确认");dialog(text_a)2.多编辑框 - 输入姓名和年龄::getInfo:: --设置跳转标签text_a, text_b = dialogInput("请选择您的姓名和年龄", "在这里输入姓名#在这里输入年龄", "确认");text_b = tonumber(text_b)
--年龄转化成数字类型mSleep(1000);if text_b ~= nil and text_a ~= "" then
--均已填写
dialog("你好,"..text_b.." 岁的 "..text_a.." 。", 5);
mSleep(1000);elseif text_a ~= "" then
--只填写了姓名
dialog("你好, "..text_a..",忘记年龄了? 请输入年龄。", 5);
goto getInfo
mSleep(1000);else
--均未填写
dialog("请填写您的信息!", 5);
mSleep(1000);
goto getInfo;
--返回重新填写end注意事项:
一般来说,使用该函数都要对用户输入的数据进行一定的检查,例如要求非空、长度不得少于。
使用双编辑框时,函数返回的两个字符串顺序与 format 中的顺序相反,请注意。
由于对话框事件需要响应时间,所以建议每次使用对话框,均应使用延迟。
名词解析:
goto 是 Lua 基本语法,设置标签,然后使用 goto 函数跳转到代码的指定位置向下执行。该函数请谨慎使用,因为大量的跳转会造成代码编写的混乱。
函数名称:获取网络时间
函数功能:从互联网上获取时间信息,返回从日到当前状态的秒数。
= getNetTime();
返回值: time
返回从 日到当前状态的秒数,如获取失败则返回 0
脚本实例:
获取网络时间 & 格式化网络时间time = getNetTime();
time_year = os.date("%Y",time)
--格式化 time 值获取年份toast(time_year)mSleep(3000)time_M = os.date("%m",time)
--格式化 time 值获取月份toast(time_M)mSleep(3000)time_D = os.date("%d",time)
--格式化 time 值获取日toast(time_D)mSleep(3000)toast(os.date("%Y年%m月%d日",time))
--连起来可以写成这样mSleep(3000)toast(os.date("%Y年%m月%d日%H点%M分%S秒",time))
--或这样获取网络时间并判断脚本过期origin = ;
--代表北京时间 2014/7/4 10:12:27origin_text = os.date("%Y/%m/%d %X", origin);
--格式化时间 current = getNetTime();
--获取网络时间 current_text = os.date("%Y/%m/%d %X", current); --格式化时间 if origin &= current then
dialog("脚本尚未过期!", 5);else
dialog("脚本已经过期!\n脚本使用期限:"..origin_text.."\n当前时间:"..current_text, 5);
lua_exit();end注意事项:
该函数需要网络支持,且根据网络状况有所延迟。
当无法正确获取的时候该函数返回0。
函数:addContactToAB 添加联系人
函数名称:添加联系人
函数功能:添加联系人到通讯录
支持版本:引擎版本 iOS v2.3.6,Android v2.0.5 以上
addContactToAB({lastname, firstname, mobile});
返回值:无
联系人电话号码
脚本实例:addAB = {
{lastname="小",firstname="明",mobile="10080"},
{lastname="小",firstname="红",mobile="10010"},
{lastname="小",firstname="白",mobile="10000"}}for _,v in ipairs(addAB) do
addContactToAB(v)end脚本实例:添加 100 个号码到手机通讯录addAB = {}f = 1for k = , ,1 do
addAB[f] = {lastname,firstname,mobile}
--通过 f 的值按顺序创建表格
addAB[f].lastname = tostring(k)
addAB[f].firstname = tostring(k)
addAB[f].mobile = tostring(k)
--生成电话号码
f = f + 1endfor _,v in ipairs(addAB) do
addContactToAB(v)
--添加到联系人end注意事项:
批量导入数据量过大的时候,导入过程会比较长。
函数:removeAllContactsFromAB 清空通讯录
函数名称:清空通讯录
函数功能:删除通讯录所有联系人
支持版本:引擎版本 iOS v2.3.6,Android v2.0.5 以上
removeAllContactsFromAB();
返回值:无
UTF-8 编码模块说明
本模块提供了对 UTF-8 编码的基础支持。 所有的函数都放在表 utf8 中。
除非另有说明, 当一个函数需要一个字节位置的参数时, 都假定这个位置要么从字节序列的开始计算, 要么从字符串长度加一的位置算。 和字符串库一样,负的索引从字符串末尾计起。
函数:utf8.char 整数序列转换字符串
函数名称:整数序列转换字符串
函数功能:接收零或多个整数, 将每个整数转换成对应的 UTF-8 字节序列,并返回这些序列连接到一起的字符串。
str = utf8.char (number_1,number_2...)
number_(*)
输入的整数序列
整数序列转换对应字符串
函数用例:str = utf8.char(35302,21160,31934,28789) dialog(str, time)扩展:
utf8.charpattern字符串用于精确匹配到一个 UTF-8 字节序列的模式
详情参照这里:
函数:utf8.codes 获取字符编码
函数名称:获取字符编码
函数功能:返回字符串中每个字符的编码
for index,code
in utf8.codes(str) do
输入的字符串
字符位置(按字节数)
函数用例:str = "触动精灵"for index,code in utf8.codes(str) do
dialog(string.format("%s的unicode编码为\\u%0x",index,code),time)end 注意事项:
返回字符位置按字节数计算。
如果处理到一个不合法的字节序列,将抛出一个错误。
函数:utf8.codepoint 获取指定位置字符编码
函数名称:获取指定位置字符编码
函数功能:获取指定位置字符编码,以整数形式返回
strcode = utf8.codepoint (str , i , j)
输入的字符串
开始位置,可缺省,默认为 1
结束位置,可缺省,默认为 1
字符串中指定位置的字符编码
函数用例:local str = "触动精灵"strcode = utf8.codepoint (str)dialog(strcode, time) 注意事项:
如果处理到一个不合法的字节序列,将抛出一个错误。
函数:utf8.len 统计字符个数
函数名称:统计字符个数
函数功能:统计指定位置的字符个数
length = utf8.len (str , i , j)
输入的字符串
开始位置,可缺省,默认为1
结束位置,可缺省,默认为-1
字符串中指定位置的字符个数
函数用例:local str = "触动精灵"length = utf8.len (str)dialog(length, time)注意事项:
如果处理到一个不合法的字节序列, 返回第一个不合法字节的位置。
函数:utf8.offset 获取字符位置
函数名称:获取字符位置
函数功能:返回字符串中的第 n 个字符的开始位置
start_num = utf8.offset (str , n , i)
输入的字符串
查找的第几个字符
开始位置,可缺省
字符串中第n个字符的开始位置
函数用例:local str = "触动精灵"start_num = utf8.offset (str , 2)dialog(start_num, time)注意事项:
返回字符位置按字节数计算。
n 为负数则取在位置 i 前的字符。 当 n 是非负数时,默认的 i 是 1, 否则默认为字符串的长度加一。
如果处理到一个不合法的字节序列,将抛出一个错误。
文字输入及按键模拟函数:inputText 输入字符串
函数名称:输入字符串
函数功能:向输入框中输入文本
inputText(string);
返回值:无
将输入的文本以及控制字符
脚本实例:
输入欢迎文本并发送touchDown(150,150);
--点击输入框获取焦点(假设输入框坐标已知)mSleep(30)touchUp(150,150);mSleep(1000);
--延迟 1 秒以便获取焦点,注意某些应用不获取焦点无法输入for var = 1,15 do
inputText("\b")
--删除输入框中的文字(假设输入框中已存在文字)endinputText("Welcome.#ENTER#"); --在输入框中输入字符串"Welcome."并回车;此函数在某些应用中无效,如支付宝、密码输入框等位置,甚至可能会导致目标应用闪退注意事项:
使用该函数前,必须先点击输入框获取焦点(指使当前的输入光标停留在某一输入框中)
控制字符包括
\b、\n、\r、#ENTER#,如果设备系统版本为 iOS 7,\r无法使用,使用\b需安装引擎版本 iOS v1.6.9 及以上
仅在 iOS 7 上可使用"#ENTER#"作为回车,相当于点击虚拟键盘上的 "Done"
需要注意的是,并不是所有输入框都可以使用此功能,如支付宝、密码输入框等位置,甚至可能会导致目标应用闪退
iOS 系统该函数不支持第三方输入法(指百度输入法、搜狗输入法等),请切换到系统内置输入法
安卓系统在使用该函数时,将自动切换至触动精灵输入法,部分机型没有成功安装触动输入法时,请手动安装百度输入法可正常使用
模拟器不能输入的话,需要修改设置,修改教程:
对于弹出的窗口,需要先初始化再使用该函数,例如 App Store登录窗口(该窗口Bundle ID 为"com.apple.springboard")
函数:switchTSInputMethod 切换到触动/帮你玩输入法(仅支持 Android)
函数名称:切换到触动/帮你玩输入法
函数功能:主动切换到触动/帮你玩输入法,大幅提高多次调用inputText执行效率,解决部分第三方输入法无法使用inputText的问题。
支持版本:触动精灵Android v2.0.8以上
switchTSInputMethod(逻辑型 flag);
返回值:无
脚本实例:-- 需要多次输入的登录模块function login(...)
switchTSInputMethod(true);
-- 切换到触动/帮你玩输入法
-- 点击输入框获取焦点
touchDown(x, y)
mSleep(30)
touchUp(x, y)
inputText("username")
-- 点击输入框获取焦点
touchDown(x, y)
mSleep(30)
touchUp(x, y)
inputText("password")
switchTSInputMethod(false);
-- 切换到之前的输入法end-- 不需要inputText输入的其他逻辑模块function main(...)
login()endmain()注意事项:
点击输入框之前调用switchTSInputMethod(true),结束调用inputText时调用switchTSInputMethod(false),这样不会导致用户手动输入失败或者inputText输入异常。
先调动switchTSInputMethod(true),才可以通过switchTSInputMethod(false)切换回之前的输入法,单纯调用switchTSInputMethod(false)没有效果。
猩猩模拟器不支持切换输入法,不切换输入法也可以正常输入。
函数:getInPutMethod 获取当前输入法包名(仅支持 Android)函数名称:获取当前输入法包名
函数方法 : getInPutMethod();
返回值:string bid
支持版本:触动精灵Android v1.3.0以上
用于切换输入法的包名
脚本实例:
频繁输入字符的脚本-- 脚本启动,获取输入法包名ipm = getInPutMethod()
-- 切换到触动输入法os.execute("settings put secure default_input_method com.touchsprite.android/.core.TSInputMethod")
-- 脚本主体-- 结束脚本前切换回之前的输入法os.execute("settings put secure default_input_method "..ipm)
注意事项:
触动输入法包名: "com.touchsprite.android/.core.TSInputMethod"
函数:pressHomeKey 模拟主屏幕按键
函数名称:模拟主屏幕按键,模拟 Home 按键
函数功能:模拟用户按下或抬起主屏幕按键的操作。
支持版本:引擎版本 iOS v1.0, Android v1.3.0 以上
pressHomeKey(state);
返回值:无
iOS 6 及其以下系统 0 - 按下;1 - 抬起;iOS 7只能填 0
脚本实例:
iOS 系统返回主屏幕--iOS 6系统 和 iOS 7.1及以上系统pressHomeKey(0);
--按下 Home 键pressHomeKey(1);
--抬起 Home 键--iOS 7 系统pressHomeKey(0);
--按下抬起 Home 键一次Android 系统返回主屏幕pressHomeKey(); --Android 系统不需要填参数,自动点击抬起iOS 系统调出后台pressHomeKey(0);
--按一次 Home 键pressHomeKey(1);mSleep(30);
--短暂延迟pressHomeKey(0);
--再按一次,在 iOS 7 以上版本中使用双击功能可使用函数 doublePressHomeKeypressHomeKey(1);3.调出 Siri (iPhone 4S 以上,iOS 6 及以下或触动版本高于v2.3.5)pressHomeKey(0);
--按下 Home 键mSleep(3000);
--按住不放pressHomeKey(1);
--抬起注意事项:
在 iOS 6 系统上,状态标识为 0 时,调用该函数则开始按下 Home 键并按住不放,直到状态标识为 1 时重新调用该函数,抬起 Home 键。
在 iOS 7 系统上,状态标识填写 0,代表按一次 Home 键,即按下并立即抬起 Home 键的操作。
在 iOS 7.1及以上版本中和6系统一致,状态标识为 0 时,调用该函数则开始按下 Home 键并按住不放,直到状态标识为 1 时重新调用该函数,抬起 Home 键。
函数:doublePressHomeKey 双击 HOME 键(仅支持 iOS)
函数名称:双击 HOME 键
函数功能:模拟用户双击 HOME 键的操作。
doublePressHomeKey();
返回值:无
脚本实例:
1.双击HOME键打开后台doublePressHomeKey();
--此函数仅能用于 iOS 7 或以上版本注意事项:
此函数需触动精灵iOS V2.x 以上版本支持
此函数仅能用于 iOS 7 或以上版本
函数:keyDown、keyUp 模拟键盘(仅支持 iOS)
函数名称:模拟键盘
函数功能:模拟外接键盘按下、抬起。
支持版本:引擎版本 iOS v2.3.5 以上
keyDown(key);
keyUp(key);
返回值:无
模拟外接键盘的键盘码
脚本实例:
--以下为粘贴示例keyDown("RightGUI") keyDown("v")keyUp("v")keyUp("RightGUI")
--以下为输入小写字母keyDown("t")keyUp("t")
--以下为输入大写字母keyDown("CapsLock")keyDown("t")keyUp("t")keyUp("CapsLock")
--以下为输入数字keyDown("1")keyUp("1")
--以下为输入符号keyDown("LeftShift")keyDown("1")keyUp("1")keyUp("LeftShift")
更多键盘码请参看→
命令: 安卓模拟物理按键(仅支持 Android)注意事项:
当 inputText 函数在某些输入框内无效时可尝试使用此函数输入字符。
每个keyDown都对应一个keyUP,单独使用keyDown有可能发生一些不可预料的问题。
在安卓某些 HTML 页面,使用 inputText 函数输入无效,可尝试使用模拟物理按键。
具体参数见→。
实例:os.execute("input keyevent 按键编码")--按下home键os.execute("input keyevent 3")--打电话给10086os.execute("input keyevent 5")
--按拨号键os.execute("input text \"10086\"")
--输入10086os.execute("input keyevent 5")
--按拨号键打通应用相关函数:runApp、closeApp 运行、关闭应用
函数名称:运行、关闭应用
函数功能:打开或关闭一个应用程序。
flag = runApp(bid, class);
返回值:state
closeApp( bid, type);
返回值:无
应用程序的Bundle ID 或包名
安卓应用程序的类名(选填)
iOS 系统:可选关闭类型(选填),0 - 关闭应用进程;1 - 关闭后台应用
0 应用启动成功;非 0 应用启动失败(7 应用不存在)
脚本实例:
打开 iOS 内置天气应用,然后退出 r = runApp("com.apple.weather");
--启动天气应用 mSleep(10 * 1000);if r == 0 then
closeApp("com.apple.weather");
--退出天气应用,使用此函数后在后台仍可看到应用程序图标属正常现象,实际进程已不在后台else
dialog("启动失败",3);end关闭 iOS 所有后台应用closeApp("*",1)--关闭所有后台应用(2.3.5以上版本有效)注意事项:
runApp函数需要系统响应时间较长,注意做好延迟或判断。
iOS 系统使用 closeApp 函数后在后台仍可看到应用程序图标属正常现象,实际进程已不在后台。
参数 type 仅在引擎版本 iOS v2.3.5 以上版本有效(参数 type 为1时为模拟双击 Home 键,向上滑动退出应用的效果)。
关于 Bundle ID 和包名的获取方法,参见"初始化"一章。
安卓应用类名自行百度,游戏不可以通过类名直接启动指定页面,不是所有应用都可以通过此方法启动指定页面。
请注意,部分手机不支持通过类名跳转指定页面。
函数:isFrontApp 判断前台应用
函数名称:判断前台应用
函数功能:根据应用的 Bundle ID 或包名判断应用是否处于前台。
flag = isFrontApp(bid);
返回值:flag
待检测的应用程序 Bundle ID 或包名
0 - 不在前台运行;1 - 在前台运行
脚本实例:
监听应用状态isfront = 1;while isfront == 1 do
--如果应用处于前台则继续
mSleep(3000);
--此处放置代码块
isfront = isFrontApp("com.tencent.mqq");
--更新前台状态end注意事项:
Bundle ID 的获取方法参见""一章。
函数:frontAppBid 获取前台应用
函数名称:获取前台应用
函数功能:获取前台应用的 Bundle ID 或包名,安卓和iOS使用有区别。
iOS函数方法:
= frontAppBid();
返回前台应用程序的Bundle ID或包名,若无应用处于前台,则返回空字符串
安卓函数方法:
= frontAppBid();
返回前台应用程序的包名,若无应用处于前台,则返回空字符串
返回前台应用程序的包名及类名
脚本实例:
iOS 系统获取前台应用bidbid = frontAppBid(); dialog(bid);--此方法同样适用于系统应用和越狱插件Android 系统获取前台应用bid bid,class = frontAppBid(); dialog(bid.."\r\n"..class);--此方法同样适用于系统应用检查指定应用是否开启bid = frontAppBid();if bid ~= "com.apple.mobilesafari" then
dialog("请打开 Safari 再运行该脚本!", 5);
mSleep(3000);
lua_exit();end注意事项:
Bundle ID 的获取方法参见""一章。
函数:appBundlePath 获取应用安装路径
函数名称:获取应用安装路径
函数功能:调用该函数将返回应用程序的安装路径。
支持版本:引擎版本 iOS v2.0.7,Android v1.3.0 以上
path = appBundlePath(string bid);
返回值:string path
需要获取路径的应用程序的 Bundle ID 或包名
目标应用程序的安装路径
脚本实例:appPath = appBundlePath("com.baidu.map");
--获取"百度地图"安装路径dialog(appPath,0);函数:appDataPath 获取应用数据路径(仅支持 iOS)
函数名称:获取应用数据路径
函数功能:调用该函数将返回应用程序的数据路径。
支持版本:引擎版本 iOS v2.0.8 以上
path = appDataPath(string bid);
返回值:string path
需要获取路径的应用程序的 Bundle ID
目标应用程序的数据路径
脚本实例:dataPath = appDataPath("com.baidu.map");
--获取"百度地图"数据路径if dataPath ~= "" then
--如果获取到路径
dialog(dataPath,0);end注意事项:
iOS 8 系统下,并非所有应用都有 data 目录,如返回值为空,说明该应用没有data 目录。
函数:appIsRunning 检测应用是否运行
函数名称:检测应用是否运行
函数功能:检测指定应用 是否在运行中。
支持版本:引擎版本 iOS v2.2.0,Android v1.3.0 以上
flag = appIsRunning(string bid);
返回值:number flag
目标应用程序的Bundle ID 或包名
0 - 目标应用未运行;1 - 目标应用运行中
脚本实例:flag = appIsRunning("com.tencent.mqq"); --检测 QQ 是否在运行if flag
--如果没有运行
runApp("com.tencent.mqq")
--运行 QQend注意事项:
此函数将判断目标应用的运行状态,目标应用前台运行或者后台运行返回值都为 1。
函数:openURL 打开网络地址
函数名称:打开网址
函数功能:调用系统浏览器,打开一个指定网址。
openURL(string url);
返回值:无
需要打开的目标网址
脚本实例:
调用系统浏览器打开触动精灵官方论坛openURL("http://www.touchsprite.com");访问 iOS 系统功能页面openURL("prefs:root=WIFI");
--打开 wifi 界面openURL("prefs:root=LOCATION_SERVICES"); --打开定位服务界面openURL("prefs:root=General&path=VPN");
--打开 VPN 界面注意事项:
默认情况下调用的浏览器为系统默认浏览器。
欲打开的目标网址必须以 http:// 开头,一些特殊协议也是支持的,Android 系统如:sms:, tel: ,iOS 系统如:mailto://, sms://, tel://, ifile://, cydia:// 等等。
函数:ipaInstall、ipaUninstall 安装、卸载应用(仅支持 iOS)
函数名称:安装、卸载应用
函数功能:用于安装或卸载 ipa 类型的应用程序。
支持版本:引擎版本 iOS v2.3.6 以上
flag = ipaInstall(string path);
flag = ipaUninstall(string bid);
返回值:number flag
0 - 失败;1 - 成功
所要安装的ipa文件路径
所要卸载的应用程序 Bundle ID
注意事项:
此功能支持在 iOS6 以上版本的系统中使用
ipaUninstall 函数执行成功后将删除文件系统中的 ipa 文件
调用此函数前需确保在目标设备中已安装过 AppSync 插件
函数:install, uninstallApp 安装、卸载应用程序(仅支持 Android)
函数名称:安装、卸载应用程序
函数功能:用于安装或卸载apk类型的应用程序。
支持版本:引擎版本 Android v1.3.0以上
flag = install(path);
flag = uninstallApp(bid);
返回值:number flag
0 - 失败;1 - 成功
所要安装的ipa文件路径
所要卸载的应用程序的应用包名
注意事项:
等同于 iOS 的ipaInstall、ipaUninstall函数
函数:getInstalledApps 获取应用列表
函数名称:获取应用列表
函数功能:获取设备上已安装应用的 Bundle ID 或包名 列表。
支持版本:引擎版本 iOS v2.3.5,Android v2.0.3 以上
list = getInstalledApps();
返回值:table型 list
已安装应用的 Bundle ID 或包名列表
脚本实例:bidList = getInstalledApps(); for k,v in pairs(bidList) do
dialog(v)end返回的 table 为以下形式:table = {
"com.touchsprite.android",
"com.netease.ddyx.netease",
...}函数:isInstalledApk 查询应用程序是否安装(仅支持 Android)
函数名称:查询应用程序是否安装
函数功能:用于查询设备上指定应用程序是否安装。
支持版本:引擎版本 Android v1.3.0 以上
flag = isInstalledApk(pkn);
返回值:flag
0 - 未安装;1 - 已安装
函数:changeSpeed 变速器(仅支持 iOS)
函数名称:触动精灵变速器
函数功能:用于改变当前应用的运行速度,加速或减速。
支持版本:引擎版本 iOS v2.3.3 以上
changeSpeed(speed,mode);
返回值:无
范围为:[1,50] [-50,-1]区间的整数
选填,一般无需填写,若加速不生效,可尝试以下参数1-非Unity 3D模式,2-Unity 3D模式
脚本实例:changeSpeed(10);
--应用加速 x10 倍,加速插件 v1.0.2 及以上版本对部分 u3d 应用有效,旧版仅对 2D 游戏有效changeSpeed(-10); --应用减速为 1/10注意事项:
此函数仅对当前前台运行应用生效(当参数为 1 时恢复正常速度,&1 为减速,&1 为加速)。
此函数需配合额外插件方可正常使用(添加官方测试源:apt-test.touchsprite.com 安装)。
加速插件有两个版本,触动精灵 iOS v2.3.9 及以上客户端请安装 v1.0.1。
加速插件 v1.0.4 及以上版本修复了部分应用闪退的问题。
此函数有可能会被部分应用检测导致封号,请开发者谨慎使用。
插件下载:
函数:cleanApp 清理应用数据(仅支持 Android)
函数名称:清理应用数据
支持版本:引擎版本 Android v2.1.4以上
函数功能:调用系统方法清理应用数据。
cleanApp(bid);
应用程序的包名
脚本实例:cleanApp("com.tencent.mobileqq")--清理QQ数据,cleanApp 函数是调用系统方法,清理之后操作不可逆,请谨慎调用注意事项:
cleanApp 函数是调用系统方法,清理之后操作不可逆,请谨慎调用。
系统信息类函数:getDeviceType 获取设备类型
函数名称:获取设备类型
函数功能:获取设备的类型,可使用获取屏幕分辨率代替。
支持版本:引擎版本 iOS v1.0,Android v1.3.0 以上
type = getDeviceType();
返回值:type,name
0 - iPod Touch;1 - iPhone;2 - iPad;3 - 安卓真机;4 - 安卓模拟器
设备类型为模拟器时返回具体模拟器名称,非模拟器时没有该参数。
模拟器名称
逍遥模拟器
海马玩模拟器
夜神模拟器
猩猩模拟器
猩猩模拟器畅玩版
天天模拟器
ttVM_Hdragon
脚本实例:
根据分辨率判断设备类型types = getDeviceType(); if types == 0 then
dialog("当前设备为 iPod Touch")elseif types == 1 then
dialog("当前设备为 iPhone")elseif types == 2 then
dialog("当前设备为 iPad")elseif types == 3 then
dialog("当前设备为安卓真机")elseif types == 4 then
dialog("当前设备为安卓模拟器"..name,5) end函数:getDeviceID 获取触动精灵设备号
函数名称:获取设备号
函数功能:获取设备标识,每台设备的标识都是唯一的。
支持版本:帮你玩平台禁用此函数
= getDeviceID();
返回值:string id
触动精灵32位设备号
脚本实例:
获取设备号并输出到日志id = getDeviceID(); --帮你玩禁用此函数toast("Device ID: "..id);注意事项:
该函数返回的并非 udid 或系统设备号,而是触动精灵内部设备号,可用来鉴定设备唯一性。
帮你玩开发者平台禁用此函数。
函数名称:获取设备内存信息
函数功能:用于获取当前设备的可用内存、总内存。
支持版本:引擎版本 iOS v2.3.5,Android v2.0.3 以上
str = getMemoryInfo();
返回值:Table型 str
触动服务内存(仅支持 iOS)
系统空闲内存
系统总内存
脚本实例:str = getMemoryInfo()dialog("触动服务占用内存 : "..str.self.."MB;剩余 : "..str.free.."MB;总内存 : "..str.total.."MB", 0)--触动服务内存返回值仅支持 iOS 系统函数:getTSVer、getOSVer 获取引擎版本号、获取系统版本号
函数功能:获取引擎版本号、获取系统版本号
= getTSVer();
= getOSVer();
返回值:version
返回的触动精灵引擎版本号或系统版本号如:1.8.5、2.0.6
脚本实例:
1.判断版本是否符合要求tsver = getTSVer();
--获取触动精灵引擎版本tsint = tonumber(string.sub(tsver, 1, 1)..string.sub(tsver, 3,3)..string.sub(tsver, 5,5));--转化为数字版本号sysver = getOSVer();
--获取系统版本sysint = tonumber(string.sub(sysver, 1, 1)..string.sub(sysver, 3,3)..string.sub(sysver, 5, 5)); --转化为数字版本号if tsint &= 170 and sysint &= 701 then
init(0);else
dialog("本脚本不支持您的触动精灵引擎版本或系统版本,请尽快升级!", 5);
lua_exit();end名词解析:
string.sub 为Lua基本函数,属于字符串处理函数库,详情请参阅相关文档。
tonumber 为 Lua
基本函数,属于类型转换函数库,详情请参阅官方文档。
注意事项:
此函数适用于触动精灵、企业版和帮你玩脚本商城、小精灵客户端,在不同的客户端下运行获取的都是触动引擎版本号而不是客户端版本号。
函数:getOSType 获取设备系统
函数名称:获取设备系统
函数功能:获取设备系统类型是 iOS 还是 Android
支持版本:iOS 引擎版本 v2.1.6,Android v1.0 以上
os_type = getOSType();
返回值:string os_type
返回设备的系统类型 iOS、android
脚本实例:
判断系统是否符合要求os_type = getOSType();
--获取设备系统版本if os_type == "android" then --返回值为纯小写字母
dialog("欢迎使用触动精灵安卓版")else
dialog("欢迎使用触动精灵 iOS 版")end注意事项:
返回值为纯小写字母
函数:batteryStatus 检测电池状态、电量
函数名称:检测电池状态、电量
函数功能:用于判断当前设备充电状态及电量。
支持版本:引擎版本 iOS v2.3.3,Android v2.0.0 以上
retTable = batteryStatus();
返回值:Table型 retTable
retTable.charging
0 - 未充电;1 - 充电状态
retTable.level
当前设备剩余电量,范围:0 - 100
脚本实例:t = batteryStatus(); if t.charging == 1 then
dialog("正在充电", time)else
dialog("未充电", time)endmSleep(1000)dialog("剩余电量"..t.level.."%")注意事项:
此函数在安卓模拟器上显示充电状态为电量100。
函数:getProcess 获取设备进程列表
函数名称:获取设备进程列表
函数功能:用于获取当前设备的所有进程列表并返回一个table。
支持版本:引擎版本 iOS v2.3.5,Android v2.0.3 以上
idList = getProcess();
返回值: idList
idList[n].id
idList[n].name
脚本实例:str = getProcess()text = "设备进程列表 总数 : " .. #str .. "\r\n"for _,v in ipairs(str) do
text = text .. v.id.." : "..v.name .. "\r\n"enddialog(text)函数:getDeviceAlias 获取设备别名(仅支持 iOS 企业版)
函数名称:获取设备别名
函数功能:用于获取触动精灵企业版的设备别名。
支持版本:企业版引擎版本 iOS v2.3.3 以上
ret = getDeviceAlias();
返回值:ret
当前安装过触动精灵企业版的设备别名
注意事项:
此函数仅适用于触动精灵企业版。
函数:getDeviceName 获取设备名称
函数名称:获取设备名称
函数功能:用于获取设备设置中的名称。
支持版本:引擎版本 iOS v2.3.9,Android v2.2.1 以上
str = getDeviceName();
返回值:str
获取到的设备名
函数:setDeviceName 设置设备名称(仅支持 iOS)
函数名称:设置设备名称
函数功能:用于设置修改设备设置中的名称。
支持版本:引擎版本 iOS v2.3.9 以上
setDeviceName(string str);
返回值:无
要设置的设备名
函数名称:获取设备 IMEI
函数功能:用于获取设备 IMEI 也就是Android ID
支持版本:引擎版本 Android v2.1.0 以上
imei = getIMEI();
返回值:imei
返回设备 IMEI,设备是模拟器时返回 nil
脚本实例:local imei = getIMEI();if imei == nil and imei == 000 then
dialog("该设备是模拟器或获取 IMEI 失败");else
dialog(imei);end函数:getNetworkIP 获取网络 IP(仅支持 Android)
函数名称:获取网络 IP
函数功能:用于获取手机网络 IP
支持版本:引擎版本 Android v2.1.1以上
ip = getNetworkIP();
返回值:ip
返回设备网络 IP,不打开 wifi 或者模拟器会显示异常。
脚本实例:-- 不打开 wifi 或者模拟器会显示异常ip = getNetworkIP();dialog(ip);函数:getDeviceBrand 获取设备品牌(仅支持 Android)
函数名称:获取设备品牌
函数功能:用于获取设备品牌
支持版本:引擎版本 Android v2.1.1以上
brand = getDeviceBrand();
返回值:brand
返回设备品牌
脚本实例:brand = getDeviceBrand()dialog(brand);函数:getDeviceModel 获取设备型号(仅支持 Android)
函数名称:获取设备型号
函数功能:用于获取设备型号
支持版本:触动精灵Android v2.1.1 以上
model = getDeviceModel();
返回值:model
deviceModel
返回设备型号
脚本实例:model = getDeviceModel()dialog(model);函数:getCPUType 获取 CPU 型号(仅支持 Android)
函数名称:获取CPU型号
函数功能:用于获取CPU型号
支持版本:引擎版本 Android v2.1.1 以上
cpu = getCPUType();
返回值:string cpu
返回设备 CPU 型号
脚本实例:cpu = getCPUType()dialog(cpu);函数:getUUID 获取 UUID(仅支持 Android)
函数名称:获取 UUID
函数功能:用于获取设备UUID
支持版本:引擎版本 Android v2.1.1以上
uuid = getUUID();
返回值:uuid
返回设备 UUID
脚本实例:uuid = getUUID()dialog(uuid);函数:getSDCardPath 获取 SD 卡路径(仅支持 Android)
函数名称:获取 SD 卡路径
函数功能:获取设备 SD 卡路径
sdPath = getSDCardPath();
返回值:sdPath
返回设备 SD 卡路径,无 SD 卡时返回 nil
脚本实例:local sdPath = getSDCardPath();if sdPath == nil then
dialog("该设备没有 SD 卡");else
dialog(sdPath);end函数:getDPI 获取屏幕 DPI 和像素密度(仅支持 Android)
函数名称:获取屏幕 DPI 和像素密度
支持版本:引擎版本 Android v2.0.3 以上
dpi,density = getDPI();
返回值:dpi,density
屏幕密度(每寸像素:120/160/240/320)
屏幕密度(像素比例:0.75/1.0/1.5/2.0)
系统控制函数:setRotationLockEnable 锁定设备方向(仅支持 iOS)
函数名称:设备方向锁定
函数功能:用于设置是否开启手机的锁定方向功能
支持版本:引擎版本 iOS v2.3.9 以上
setRotationLockEnable(逻辑型 flag);
返回值:无
打开方向锁定 -关闭方向锁定 - false
脚本实例:setRotationLockEnable(true);
--打开方向锁定setRotationLockEnable(false); --关闭方向锁定函数:setWifiEnable 无线开关
函数名称:无线开关
函数功能:用于设置是否打开无线开关
支持版本:引擎版本 iOS v1.0,Android v1.3.0以上
setWifiEnable(flag);
返回值:无
打开 WiFi -关闭 WiFi - false
脚本实例:setWifiEnable(true);
--打开 WifisetWifiEnable(false);
--关闭 Wifi函数:setBTEnable 蓝牙开关
函数名称:蓝牙开关
函数功能:用于设置是否打开蓝牙开关
支持版本:引擎版本 iOS v2.1.8,Android v1.3.0 以上
setBTEnable(flag);
返回值:无
打开蓝牙 -关闭蓝牙 - false
脚本实例:setBTEnable(true);
--打开蓝牙setBTEnable(false); --关闭蓝牙函数:setAirplaneMode 飞行模式开关
函数名称:飞行模式开关
函数功能:用于设置是否打开飞行模式开关
支持版本:引擎版本 iOS v2.1.8,Android v2.0.2 以上
setAirplaneMode(flag);
返回值:无
打开飞行模式 -关闭飞行模式 - false
脚本实例:setAirplaneMode(true);
--打开飞行模式setAirplaneMode(false); --关闭飞行模式函数:getVPNStatus 获取VPN状态
函数名称:获取 VPN 状态
函数功能:用于获取 VPN 当前连接状态并返回一个 table
支持版本:引擎版本 iOS v2.3.6,Android v2.0.5 以上
flag = getVPNStatus();
返回值:flag
flag.active
true - 打开;false - 关闭
flag.status
连接状态本地化字符串,不同语言下字符串不同(仅支持 iOS)
脚本实例:flag = getVPNStatus()if flag.active then
dialog("打开状态"..flag.status)--flag.status 仅支持 iOS 系统else
dialog("关闭状态"..flag.status)--flag.status 仅支持 iOS 系统end注意事项:
如系统中没有已经建立好 的VPN 连接,调用此函数将不会产生任何效果。
安卓没有 flag.status 字段。
函数:setVPNEnable VPN 开关(仅支持 iOS)
函数名称:VPN 开关
函数功能:用于设置是否打开系统 VPN 开关
支持版本:}

我要回帖

更多关于 A∪X接口是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信