本文主要是介绍LuaBox积木编程开发手册-精编版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 转载声明
- 一、LuaBox(积木编程)是什么?
- 1.使用注意事项
- 2.扩展资料
- 二、开发指南
- 1.准备工作
- Lua 编程
- 注释
- 语句块
- 赋值语句
- 循环语句
- while 循环
- repeat 循环(相当于其他语言中的 do…while)
- for 循环
- 数值运算
- 字符串连接,函数与字符串连接
- 比较运算
- 逻辑运算
- 运算符优先级
- 关键字
- 变量类型
- 变量的定义
- Lua常用函数
- 函数:type 判断数据类型
- 函数用例
- 函数:require 加载模块
- 函数:tonumber 将字符串转成数字
- 函数:tostring 将数字转成字符串
- 函数:pcall 保护模式调用
- IO 相关参数
- 函数:io.open 按模式打开文件
- 函数:io.type 判断句柄
- 函数:io.read 按模式读取文件
- 函数:io.write 写入到文件
- 函数:io.close 关闭文件句柄
- OS相关函数
- 函数:os.date 格式化日期
- 函数:os.time 格式化时间
- 函数:os.rename 重命名文件(夹)
- 函数:os.remove 删除文件
- 函数:os.execute 执行 shell 命令
- 函数:string.find 查找字符串
- 函数:string.format 格式化字符串
- 函数:string.gmatch 全局模式匹配
- 函数:string.gsub 字符串替换
- 函数:string.len 获取字符串长度
- 函数:string.match 字符串查找
- 函数:string.rep 复制字符串
- 函数:string.reverse 字符串反转
- 函数:string.sub 字符串截取
- 函数:string.upper 小写字母转大写
- 函数:string.lower 大写字母转成小写
- 函数:string.byte 字符串转 ASCII 编码
- 函数:string.char ASCII 编码转字符串
- table相关函数
- 函数:table.concat 数组连接
- 函数:table.insert 插入数据到数组
- 基本函数
- 函数:mSleep 延时
- 函数:mSleep 延时
- 函数:dialog 提示框
- 函数:showTextView 简易文字视图
- 函数:closeTextView 关闭所有视图
- 函数:getRndNum 获取随机数
- 模拟点击
- 函数:event.tap 点击(仅支持 7 及其以上系统)
- 函数:event.moveTo 滑动(仅支持 7 及其以上系统)
- 函数:event.press 长按(仅支持安卓 7 及其以上系统)
- 函数:widget.find 根据属性组合查找控件
- 函数:widget.desc 根据描述属性查找控件
- 函数:widget.id 根据属性查找控件
- 函数:widget.text 根据文本属性查找控件
- 函数:widget.region 获取控件的区域属性
- 函数:widget.longclickable 判断控件是否可以长按
- 函数:widget.checkable 判断控件是否可勾选
- 函数:widget.scrollable 判断控件是否可滚动
- 函数:widget.editable 获取控件是否可以输入
- 函数:widget.visibleToUser 控件是否可见
- 函数:widget.enabled 判断控件是否可以激活
- 函数:widget.clickable 判断控件是否可点击
- 函数:widget.selected 获取控件选中状态
- 函数:widget.checked 判断控件勾选状态
- 函数:widget.click 点击控件
- 函数:widget.setText 对控件输入文本
- 函数:widget.longClick 长按控件
- 函数:widget.scrollForward 向前滑动控件
- 函数:widget.scrollBackward 向后滑动控件
- 应用
- 函数:app.getName 获取应用名称
- 函数:app.getVer 获取应用版本
- 函数:app.frontPackageName 获取前台应用包名
- 函数:app.runApp 运行应用
- 函数:app.uninstallApp 卸载应用
- 函数:app.openURL 打开网址
- 文件IO函数
- 函数:file.isExist 判断文件(夹)是否存在
- 函数:file.new 新建文件(夹)
- 函数:file.readString 读文件返回字符串
- 函数:file.writeString 保存字符串到文件
- 函数:file.rename 重命名文件
- 函数:file.copy 复制文件
- 函数:file.move 移动文件
- 函数:file.del 删除文件
- 函数:file.delFolder 删除文件夹
- 函数:file.getSDCardPath 获取 SD 卡路径
- 图片函数
- 函数:image.crop 裁剪图片
- 函数:image.findImage 图中找图
- 函数:image.findImageInRegion 误差找图
- 函数:image.getColorRGB 获取图片对象某点 RGB 颜色
- 函数:image.load 从文件创建图片
- 函数:image.save 保存图片
- 函数:image.setColor 设置图片色值
- 函数:image.size 获取图片对象尺寸
- 函数:image.snapshot 截取屏幕
- 模拟按键
- 函数:keycode.back 模拟按下返回键
- 函数:keycode.home 模拟按下 home 键
- 函数:keycode.notification 拉出通知栏
- 函数:keycode.quickSetting 显示快速设置
- 函数:keycode.recent 打开最近任务
- 函数:keycode.splitScreen 设备分屏
- 函数:keycode.power 弹出电源键菜单
- 设备函数
- 函数:device.writePasteboard 写入剪贴板
- 函数:device.readPasteboard 读取剪贴板
- 函数:device.getOSVer 获取系统版本号
- 函数:device.getLuaBoxVer 获得 LuaBox 版本号
- 函数:device.getTotalMemory 获得设备内存总量
- 函数:device.getFreeMemory 获得设备空闲内存
- 函数:device.isWake 判断屏幕是否亮屏
- 函数:device.wake 唤醒屏幕
- 函数:device.keepWake 保持屏幕常亮
- 函数:device.setAlarmVolume 设置闹钟音量
- 函数:device.getAlarmVolume 获取闹钟音量
- 函数:device.batteryQuantity 获取设备剩余电量
- 函数:device.betteryCharging 获取设备充电状态
- 函数:device.getMediaVolume 获取媒体音量最大值
- 函数:device.setMediaVolume 设置媒体音量
- 函数:device.getNotificationVolume 获取通知音量最大值
- 函数:device.setNotificationVolume 设置通知音量
- 函数:device.vibrator 手机震动
- 函数:device.cancelVibration 停止震动
- 脚本控制
- 函数:runtime.exit 停止脚本
- 函数:runtime.restart 重载脚本
- 媒体
- 函数:runtime.restart 重载脚本
- 函数:media.jump 调整音频播放进度
- 函数:media.pause 暂停音频播放
- 函数:media.isPlaying 获取音频播放状态
- 函数:media.stop 停止播放音频
- 函数:media.getMusicDuration 获取播放音乐的总时长
- 函数:media.getMusicCurrentPosition 获取当前音频播放进度
- 函数:media.addToLib 添加音频文件到媒体库
转载声明
原文章内不具备全局搜索功能,对于编程人员很不友好,很难查找相关编程函数,特此转发到CSDN.
网站转载,特此声明,原文出处:点击→积木编程
欢迎您使用 Luabox 开发文档! 希望以下文档可以帮助您解决开发中遇到的函数问题。
一、LuaBox(积木编程)是什么?
积木编程是一款模拟手机触摸、按键操作的软件。通过制作脚本,可以让积木编程代替双手,自动执行一系列触摸、按键操作。积木编程简单、易用,不需要掌握任何编程知识就可以制作出功能强大的脚本;还可以使用编程知识,编写出功能更为复杂,交互更为灵活的脚本;只要能够在手机上完成的人为操作,积木编程都可以代替完成,不仅省力,而且高效。
1.使用注意事项
本说明仅供初等文化水平以上的、了解计算机编程基本原理的个人学习与参考,并不适用于零基础的编程入门者学习编程基本知识。严禁用于商业以及非法目的,严禁转载、抄袭、未经许可地引用。
为了便于解释和描述,本说明中采用了一些非专业的描述与形容方法(如:number),敬请理解。因编写校对仓促,如有错误欢迎指正。本文中的示例仅供函数参考,不能直接用于脚本中。
2.扩展资料
Lua 官方手册:英文http://www.lua.org/manual/5.2/
Lua菜鸟教程:中文https://www.runoob.com/lua/lua-tutorial.html
二、开发指南
1.准备工作
需要在设置中打开积木编程的无障碍开关方能进行使用,如果出现函数失效的问题,请重启无障碍开关再试下
部分函数仅支持 7 及其以上系统。
新建脚本会在 /mnt/sdcard/LuaBox/Projects/ 文件夹新建一个文件夹并生成 main.lua 文件,文件夹名称为第一次输入的脚本名称,修改脚本名称此文件夹名称不会改变。
此手册函数与触动函数不通用,请仔细查看函数手册。
找到目录时需要使用第三方文件管理器,推荐 :RE文件管理器。
Lua 编程
经典的 “Hello world” 的程序总是被用来开始介绍一种语言。在 Lua 中,写一个这样的程序很简单:
print("Hello world")
-- 以上用法经过本人测试并不能在安卓端正确输入.
在 Lua 中,语句之间可以用分号 “;” 隔开,也可以用空白隔开。一般来说,如果多个语句写在同一行的话,建议总是用分号隔开。
Lua 有好几种程序控制语句,如:
条件控制: if 条件 then … elseif 条件 then … else … end
While 循环: while 条件 do … end
Repeat 循环: repeat … until 条件
For 循环: for 变量 = 初值,终点值,步进 do … end
For 循环: for 变量 1,变量 2,… ,变量 N in 表或枚举函数 do … end
注意一下,for 的循环变量总是只作用于 for 的局部变量,你也可以省略步进值,这时候,for 循环会使用 1 作为步进值。
你可以用 break 来中止一个循环。
如果你有程序设计的基础,比如你学过 Basic,C 之类的,你会觉得 Lua 也不难。但 Lua 有几个地方是明显不同于这些程序设计语言的,所以请特别注意。
关于 Lua 数组、迭代器、模块与包、元素、协同程序、文件 I/O、数据库访问等更多语法相关教程,请访问 Lua 菜鸟教程。
注释
写一个程序,总是少不了注释的。
在 Lua 中,你可以使用单行注释和多行注释。
单行注释中,连续两个减号 “–” 表示注释的开始,一直延续到行末为止。相当于 C++ 语言中的 “//”。
多行注释中,由 “–[[” 表示注释开始,并且一直延续到 “]]” 为止。这种注释相当于 C 语言中的 “/**/”。在注释当中,"[[" 和 “]]” 是可以嵌套的。
语句块
语句块在 C++ 中是用 “{” 和 “}” 括起来的,在 Lua 中,它是用 do 和 end 括起来的。比如:
do print("Hello") end
你可以在函数和语句块中定义局部变量。
赋值语句
赋值语句在 Lua 被强化了,它可以同时给多个变量赋值。 例如:
a,b,c,d=1,2,3,4
甚至是:
a,b=b,a --多么方便的交换变量功能啊
在默认情况下,变量总是认为是全局的。假如你要定义局部变量,则在第一次赋值的时候,需要用 local 说明。比如
local a,b,c = 1,2,3 -- a,b,c 都是局部变量
循环语句
- while 循环:while 条件 do … end
- repeat 循环:repeat … until 条件
- for 循环:for 变量 = 初值,终点值,步进 do … end
- for 循环:for 变量 1,变量 2,… ,变量 N in表或枚举函数 do … end
while 循环
my_table = {1,2,3}
local index = 1 -- 注意: table 中的索引从 1 开始while my_table[index] do -- 只要条件返回 true,就一直执行循环
print(my_table[index])
index = index +1 -- Lua 中没有 i++ 的写法,所以只能用这种写法
end-- 输出 1
-- 2
-- 3
repeat 循环(相当于其他语言中的 do…while)
local snum = 1 --起始值repeat
print("snum is "..snum)
snum = snum + 1
until snum == 4 --当 snum 等于 4 时 跳出循环--输出:
--snum is 1
--snum is 2
--snum is 3
for 循环
for i = 1, #my_table do --#my_table 表示取表的长度,上边定义了长度为 3
print(my_table[i])
end
for i=1,10,2 do -- 这里i=1表示起始值, 10 表示最大值, 2 表示步进值(可以没有,默认值为 1,也就是其他语言里的 i++)
print(i)
end
注意一下,for 的循环变量总是只作用于 for 的局部变量,你也可以省略步进值,这时候,for 循环会使用 1 作为步进值。 可以用 break 来中止一个循环。
数值运算
字符串连接,函数与字符串连接
和 C 语言一样,支持+, -, *, /。但 Lua 还多了一个 “^”。这表示指数乘方运算。比如 2^3 结果为 8, 2^4 结果为 16。
连接两个字符串,可以用”…“运算符。如:
toast("This a " .. "string.")
-- 输出 "this a string"
a=34
b=22
toast("小明的年龄是:"..a.."小李的年龄是:"..b)
-- 输出为:小明的年龄是:34小李的年龄是:22
比较运算
参照网址:Lua 运算符
< > <= >= == ~=
分别表示 小于,大于,不大于,不小于,相等,不相等
所有这些操作符总是返回 true 或 false。
对于 Table,Function 和 Userdata 类型的数据,只有 == 和 ~=可以用。相等表示两个变量引用的是同一个数据。比如:
a={1,2}
b=a
print(a==b, a~=b) -- true, false
a={1,2}
b={1,2}
print(a==b, a~=b) -- false, true
逻辑运算
and, or, not
其中,and 和 or 与 C 语言区别特别大。
在这里,请先记住,在 Lua 中,只有 false 和 nil 才计算为 false,其它任何数据都计算为 true,0 也是 true!
and 和 or 的运算结果不是 true 和 false,而是和它的两个操作数相关。
a and b: 如果 a 为 false,则返回 a;否则返回 b
a or b: 如果 a 为 true,则返回 a;否则返回 b
举几个例子:
print(4 and 5) --> 5
print(nil and 13) --> nil
print(false and 13) --> false
print(4 or 5) --> 4
print(false or 5) --> 5
在Lua中这是很有用的特性,也是比较令人混洧的特性。
我们可以模拟 C 语言中的语句:
x = a? b : c
在 Lua 中,可以写成:
x = a and b or c
最有用的语句是:
x = x or v
它相当于:
if not x then x = v end
运算符优先级
从高到低顺序如下:
^not - (一元运算)* /+ -..(字符串连接)< > <= >= ~= ==andor
关键字
关键字是不能做为变量的。Lua 的关键字不多,就以下几个:
and break do else elseifend false for function ifin local nil not orrepeat return then true until while
变量类型
怎么确定一个变量是什么类型的呢?大家可以用 type() 函数来检查。Lua 支持的类型有以下几种:
Nil 空值
所有没有使用过的变量,都是 nil。nil 既是值,又是类型。
Boolean 布尔值
true 或 false
Number 数值
在 Lua 里,数值相当于 C 语言的 double
String 字符串
如果你愿意的话,字符串是可以包含 ‘\0’ 字符的
Table 关系表类型
这个类型功能比较强大,我们在后面慢慢说。
Function 函数类型
不要怀疑,函数也是一种类型,也就是说,所有的函数,它本身就是一个变量。
Userdata
嗯,这个类型专门用来和 Lua 的宿主打交道的。宿主通常是用 C 和 C++ 来编写的,在这种情况下,Userdata 可以是宿主的任意数据类型,常用的有 Struct 和指针。
Thread 线程类型
在 Lua 中没有真正的线程。Lua 中可以将一个函数分成几部份运行。如果感兴趣的话,可以去看看 Lua 的文档。
变量的定义
所有的语言,都要用到变量。在 Lua 中,不管你在什么地方使用变量,都不需要声明,并且所有的这些变量总是全局变量,除非,你在前面加上 “local”。
这一点要特别注意,因为你可能想在函数里使用局部变量,却忘了用 local 来说明。
至于变量名字,它是大小写相关的。也就是说,A 和 a 是两个不同的变量。
定义一个变量的方法就是赋值。“=” 操作就是用来赋值的 我们一起来定义几种常用类型的变量吧。
Nil
正如前面所说的,没有使用过的变量的值,都是 Nil。有时候我们也需要将一个变量清除,这时候,我们可以直接给变量赋以 nil 值。如:
var1=nil -- 请注意 nil 一定要小写
Boolean
布尔值通常是用在进行条件判断的时候。
布尔值有两种:true 和 false。在 Lua 中,只有 false 和 nil 才被计算为 false,而所有任何其它类型的值,都是 true。比如 0,空串等等,都是 true。不要被C语言的习惯所误导,0 在 Lua 中的的确确是 true。你也可以直接给一个变量赋以 Boolean 类型的值,如:
varboolean = true
Number
在 Lua 中,是没有整数类型的,也不需要。一般情况下,只要数值不是很大(比如不超过100,000,000,000,000),是不会产生舍入误差的。在很多 CPU 上,实数的运算并不比整数慢。 实数的表示方法,同 C 语言类似,如: 4 0.4 4.57e-3 0.3e12 5e+20
String
字符串,总是一种非常常用的高级类型。在 Lua 中,你可以非常方便的定义很长很长的字符串。 字符串在 Lua 中有几种方法来表示,最通用的方法,是用双引号或单引号来括起一个字符串的,如:
"This is a string."
和 C 语言相同的,它支持一些转义字符,列表如下:
\a bell
\b back space
\f form feed
\n newline
\r carriage return
\t horizontal tab
\v vertical tab
\ backslash
" double quote
’ single quote
[ left square bracket
] right square bracket
由于这种字符串只能写在一行中,因此,不可避免的要用到转义字符。加入了转义字符的串,看起来实在是不敢恭维,比如:
"one line\nnext line\n\"in quotes\", 'in quotes'"
一大堆的 “” 符号让人看起来很倒胃口。如果你与我有同感,那么,我们在Lua中,可以用另一种表示方法:用 “[[“和”]]” 将多行的字符串括起来,如:
page = [[
<HTML><HEAD><TITLE>An HTML Page</TITLE></HEAD><BODY>
<HTML>
]]
值得注意的是,在这种字符串中,如果含有单独使用的 “[[” 或 “]]” 就仍然得用 “[” 或 ”]" 来避免歧义。当然,这种情况是极少会发生的。
Table
关系表类型,这是一个很强大的类型。我们可以把这个类型看作是一个数组。只是 C 语言的数组,只能用正整数来作索引;在 Lua 中,你可以用任意类型来作数组的索引,除了 nil。同样,在 C 语言中,数组的内容只允许一种类型;在 Lua 中,你也可以用任意类型的值来作数组的内容,除了 nil。
Table 的定义很简单,它的主要特征是用 “{” 和 “}” 来括起一系列数据元素的。比如:
T1 = {} -- 定义一个空表
T1[1]=10 -- 然后我们就可以象 C 语言一样来使用它了。
T1["John"]={Age=27, Gender="Male"}
这一句相当于:
T1["John"]={} -- 必须先定义成一个表,还记得未定义的变量是 nil 类型吗
T1["John"]["Age"]=27
T1["John"]["Gender"]="Male"
当表的索引是字符串的时候,我们可以简写成:
T1.John={}
T1.John.Age=27
T1.John.Gender="Male"
或
T1.John{Age=27, Gender="Male"}
这是一个很强的特性。
在定义表的时候,我们可以把所有的数据内容一起写在 “{” 和 “}” 之间,这样子是非常方便,而且很好看。比如,前面的 T1 的定义,我们可以这么写:
T1={10, -- 相当于 [1] = 10[100] = 40,John= -- 如果你原意,你还可以写成:["John"] ={Age=27, -- 如果你原意,你还可以写成:["Age"] =27Gender=Male -- 如果你原意,你还可以写成:["Gender"] =Male},20 -- 相当于 [2] = 20}
看起来很漂亮,不是吗?
我们在写的时候,需要注意三点:
第一,所有元素之间,总是用逗号 “,” 隔开;
第二,所有索引值都需要用 “[” 和 “]” 括起来;如果是字符串,还可以去掉引号和中括号;
第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从 1 往后编;
表类型的构造是如此的方便,以致于常常被人用来代替配置文件。是的,不用怀疑,它比 ini 文件要漂亮,并且强大的多。
Function
函数,在 Lua 中,函数的定义也很简单。典型的定义如下:
function add(a,b) -- add 是函数名字,a 和 b 是参数名字
return a+b -- return 用来返回函数的运行结果
end
请注意,return 语言一定要写在 end 之前。假如你非要在中间放上一句 return,那么请写成:do return end。
还记得前面说过,函数也是变量类型吗?上面的函数定义,其实相当于:
add = function (a,b) return a+b end
当你重新给 add 赋值时,它就不再表示这个函数了。你甚至可以赋给 add 任意数据,包括 nil(这样,你就清除了 add 变量)。Function 是不是很象 C 语言的函数指针呢?
和 C 语言一样,Lua 的函数可以接受可变参数个数,它同样是用 “…” 来定义的,比如:
function sum (a,b,…)
如果想取得 … 所代表的参数,可以在函数中访问 arg 局部变量(表类型)得到。如
sum(1,2,3,4)
则,在函数中,
a = 1, b = 2, arg = {3, 4}
更可贵的是,它可以同时返回多个结果,比如:
function s()return 1,2,3,4
end
a,b,c,d = s() -- 此时,a = 1,b = 2,c = 3,d = 4
前面说过,表类型可以拥有任意类型的值,包括函数!因此,有一个很强大的特性是,拥有函数的表,哦,我想更恰当的应该说是对象吧。Lua可以使用面向对象编程了。不信?那我举例如下:
t ={Age = 27add = function(self, n) self.Age = self.Age+n end}print(t.Age) -- 27t.add(t, 10)print(t.Age) -- 37
不过,t.add(t,10) 这一句实在是有点土对吧?没关系,在 Lua 中,你可以简写成:
t:add(10) -- 相当于 t.add(t,10)
Lua常用函数
函数:type 判断数据类型
bool = type(str)
参数 | 必填 | 说明 |
---|---|---|
str | 是 | 需要判断的数据 |
返回值 | 说明 |
---|---|
bool | 数据类型:“number”、“string”、“boolean”、“table”、“function”、“thread”、“userdata” |
函数用例
num = 111
str = tostring(num)
dialog("转换后的内容:"..str.."\r\n".."数据类型:"..type(str),5000)
函数:require 加载模块
函数名称:加载模块
函数名称:加载模块
函数方法
bool = require(modle)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
modle | string | 是 | 需要加载的模块名称 |
返回值 | 说明 |
---|---|
bool | 模块返回值 |
函数用例
--加载 lua 文件
--如果要加载 ceshi.lua 文件代码如下
require("ceshi")
注意事项
- 加载文件和被加载文件存放在相同脚本文件夹下才能调用成功,否则会提示模块不存在。推荐加载文件和被加载文件放到 IDE 的相同工程下,选择工程 - 点击鼠标右键 - 点击发送工程到设备上。
- 特别注意不要加载触动的 so 及 TSLib.lua,触动的 so 仅支持触动,不支持积木编程,触动函数和积木函数不通用。*
函数:tonumber 将字符串转成数字
函数名称:将字符串转成数字
函数方法
num = tonumber(str, base)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str | string | 是 | 需要转换的字符串 |
base | string | 否 | 原字符进制类型,不写默认为 10 |
返回值 | 类型 | 说明 |
---|---|---|
num | number/nil | 转换后的数字 |
函数用例
str = "111"
num = tonumber(str)
dialog("转换后的内容:"..num.."\r\n".."数据类型:"..type(num),5000)
注意事项
- 当调用 base 时,则 str 应该是一个字符串,该字符串将被解释为该基数中的整数。基数可以是 2 到 36 之间(包括 2 和 36)的任何整数。在 10 以上的基数中,字母’A’(大写或小写)代表 10,‘B’ 代 表 11,依此类推,‘Z’ 代表 35
函数:tostring 将数字转成字符串
函数名称:将数字转成字符串
函数方法
str = tostring(num)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
num | number | 是 | 需要转换的数字 |
返回值 | 类型 | 说明 |
---|---|---|
str | string/nil | 转换后的字符串 |
函数用例
num=111
str = tostring(num)
dialog("转换后的内容:"..str.."\r\n".."数据类型:"..type(str),5000)
函数:pcall 保护模式调用
函数名称:保护模式调用
函数功能:保护执行 function 函数, function 内部发生的错误不会影响脚本运行
函数方法
bool,msg = pcall(fun,action,…)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
fun | function | 是 | 待调用参数 |
action | - | 否 | 待传入 fun 的参数,支持多个参数 |
返回值 | 类型 | 说明 |
---|---|---|
bool | boolean | true - 无错误,false - 有错误 |
msg | - | 有错误时返回错误信息 |
函数用例
bool,msg = pcall(function(i) print(i) error('error..') end,33)
if bool thendialog("无错误",5000)
elsedialog(msg,5000)
end
IO 相关参数
函数:io.open 按模式打开文件
函数名称:按模式打开文件
函数功能:以字符串指定的模式打开文件
函数方法
file,msg = io.open(filename,mode)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
filename | string | 是 | 需要打开的文件路径 |
mode | string | 否 | 打开模式,不写默认为 "r" |
mode 参数介绍
参数 | 说明 |
---|---|
"r” | 读取模式(默认) |
"w” | 写模式 |
"a” | 追加模式 |
"r+" | 更新模式,所有以前的数据都保留 |
"w+" | 更新模式,以前的所有数据都被删除 |
"a+" | 追加更新模式,保留以前的数据,只允许在文件末尾写入 |
"b" | 二进制方式 |
返回值 | 类型 | 说明 |
---|---|---|
file | userdata/nil | 成功返回打开文件的句柄,失败返回 nil |
msg | string | 返回报错信息 |
函数用例
file,msg = io.open("/mnt/sdcard/kazhu.txt")
if file thendialog("打开成功",5000)file:close()
elsedialog("打开失败,失败原因:"..msg,5000)
end
函数:io.type 判断句柄
函数名称:判断句柄
函数功能:判断是否为有效句柄
函数方法
bool = io.type(file)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
file | userdata | 是 | 需要判断的文件句柄 |
返回值 | 类型 | 说明 |
---|---|---|
bool | string | “file“ - 一个打开的文件句柄,"closed file“ - 为一个已关闭的文件句柄,nil - 不是文件句柄 |
函数用例
file,msg = io.open("/mnt/sdcard/kazhu.txt")
bool = io.type(file)
if bool == "file" thendialog("是文件句柄",5000)
elseif bool == "closed file" thendialog("句柄已关闭",5000)
elseif bool == nil thendialog("不是文件句柄",5000)
end
函数:io.read 按模式读取文件
函数名称:按模式读取文件
函数功能:按指定模式读取文件
函数方法
file,msg=io.read(format)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
format | string | 否 | 读取格式 / 读取的字节数,不写默认值 :"*l" |
参数 | 说明 |
---|---|
"*n" | 读取一个数字 |
"*a": | 从当前位置读取整个文件,若为文件尾返回空字串 |
"*l" | 读取下一行的内容,若为文件尾返回 nil |
number | 读取指定字节数的字符,若为文件尾返回 nil;如果 number 为 0 则返回空字串;若为文件尾,则返回 nil |
返回值 | 类型 | 说明 |
---|---|---|
file | userdata/nil | 成功返回打开文件的句柄,失败返回 nil |
msg | string | 返回报错信息 |
函数用例
file,msg = io.open("/mnt/sdcard/kazhu.txt")
if file thendialog("文件全部内容:"..file:read("*a"),5000)file:close()
elsedialog("打开失败,失败原因:"..msg,5000)
end
函数:io.write 写入到文件
函数名称:写入到文件
函数功能:写入到文件
函数方法
io.write(str)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str | string/number | 是 | 需要写入的内容 |
函数用例
file,msg = io.open("/mnt/sdcard/888.txt","r+")
if file thenfile:write("1")mSleep(2000)dialog(file:read("*n"),5000)file:close()
elsedialog("打开失败,失败原因:"..msg,5000)
end
函数:io.close 关闭文件句柄
函数名称:关闭文件句柄
函数功能:关闭文件句柄
函数方法
io.close()
函数用例
file,msg = io.open("/mnt/sdcard/kazhu.txt")
if file thendialog("打开成功",5000)file:close()
elsedialog("打开失败,失败原因:"..msg,5000)
end
OS相关函数
函数:os.date 格式化日期
函数名称:格式化日期
函数功能:格式化日期
函数方法
str = os.date(format,timeout)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
format | string | 是 | 格式化字符串 / 格式符 |
timeout | string | 否 | 指定格式化的时间, 不写默认为当前时间 |
格式化字符串
格式符 | 类型 | 类型 |
---|---|---|
%a | 一星期中天数的简写 | (Fri) |
%A | 一星期中天数的全称 | (Wednesday) |
%b | 月份的简写 | (Sep) |
%B | 月份的全称 | (May) |
%c | 日期和时间 | (09/16/98 23:48:10) |
%d | 一个月中的第几天 | (28)[0 - 31] |
%H | 24 小时制中的小时数 | (18)[00 - 23] |
%I | 12 小时制中的小时数 | (10)[01 - 12] |
%j | 一年中的第几天 | (209)[01 - 366] |
%M | 分钟数 | (48)[00 - 59] |
%m | 月份数 | (09)[01 - 12] |
%P | 上午或下午 | (pm)[am - pm] |
%S | 一分钟之内秒数 | (10)[00 - 59] |
%w | 一星期中的第几天 | (3)[0 - 6 = 星期天 - 星期六] |
%W | 一年中的第几个星期 | (2)0 - 52 |
%x | 日期 | (09/16/98) |
%X | 时间 | (23:48:10) |
%y | 两位数的年份 | (16)[00 - 99] |
%Y | 完整的年份 | (2016) |
%% | 字符串'%' | (%) |
参数 | 类型 | 说明 |
---|---|---|
str | string/table | 格式化后的时间 |
函数用例
--获取当前日期及时间
local nowTime = os.date("*t",os.time()) --返回一个 table
dialog(nowTime.year,5) --年
dialog(nowTime.month,5) --月
dialog(nowTime.day,5) --日
dialog(nowTime.hour,5) --小时
dialog(nowTime.min,5) --分钟
dialog(nowTime.sec,5) --秒钟
dialog(nowTime.yday,5) --显示当前为一年中的第几天
--时间戳格式化当前时间
local nowTime = os.date("%Y-%m-%d %H:%M:%S", os.time())
dialog(nowTime,5000)
--获取今天是星期几
local today = tonumber(os.date("%w",os.time()))
if today ==0 thendialog("今天是周日",5000)
elseif today ==6 thendialog("今天是周六",5000)
elseif today ==1 thendialog("今天是周一",5000)
elseif today ==2 thendialog("今天是周二",5000)
elseif today ==3 thendialog("今天是周三",5000)
elseif today ==4 thendialog("今天是周四",5000)
elseif today ==5 thendialog("今天是周五",5000)
end
函数:os.time 格式化时间
函数名称:格式化时间
函数功能:将时间转成时间戳
函数方法
exampletime = os.time(timeout)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
timeout | table | 否 | 指定格式化的时间, 不写默认为当前时间 |
timeout 参数介绍
格式符 | 类型 | 说明 |
---|---|---|
hour | number | 小时 |
min | number | 分钟 |
wday | number | 星期 |
day | number | 日期 |
month | number | 月份 |
year | number | 年 |
sec | number | 秒 |
yday | number | 一年当中第几天 |
isds | boolean | 夏时令 |
参数 | 类型 | 说明 |
---|---|---|
exampletime | number | 转换后的时间戳 |
函数用例
--获取当前时间的时间戳
local exampletime = os.time();
dialog("转换后的时间戳:"..exampletime)
dialog(os.date("%c",exampletime))
local exampletime = os.time({year=2020,month=12,day=25,hour=8,min=0,sec=0})
dialog("转换后的时间戳:"..exampletime)
dialog(os.date("%c",exampletime))
函数:os.rename 重命名文件(夹)
函数名称:重命名文件(夹)
函数功能:修改文件(夹)名称
函数方法
bool,msg = os.rename (oldname, newname)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
oldname | string | 是 | 修改前的文件路径及名称 |
newname | string | 是 | 修改后的文件路径及名称 |
参数 | 类型 | 说明 |
---|---|---|
bool | boolean | 成功 - tue,失败 - nil |
msg | string | 失败返回的错误信息 |
函数用例
bool,msg = os.rename ("/mnt/sdcard/111/","/mnt/sdcard/222/")
if bool thendialog("修改成功",5000)
elsedialog("修改失败,失败原因:"..msg,5000)
end
函数:os.remove 删除文件
函数名称:删除文件
函数功能:删除文件
函数方法
bool,msg = os.remove(filename)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
filename | string | 是 | 需要删除的文件路径 |
参数 | 类型 | 说明 |
---|---|---|
bool | boolean | 成功 - tue,失败 - nil |
msg | string | 失败返回的错误信息 |
函数用例
bool,msg = os.remove("/mnt/sdcard/111/")
if bool thendialog("删除成功",5000)
elsedialog("删除失败,失败原因:"..msg,5000)
end
函数:os.execute 执行 shell 命令
函数名称:执行 shell 命令
函数功能:执行 shell 命令
函数方法
os.execute(command)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
command | string | 是 | 需要执行的 shell 命令 |
函数:string.find 查找字符串
函数名称:查找字符串
函数功能:根据匹配项查找数据
函数方法
num1,num2 = string.find(s,pattern,in,plain)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
s | string | 是 | 原字符串 |
pattern | string | 是 | 待查找的字符串或模式匹配 |
in | number | 否 | 从第几个字符开始搜索,不写默认为 1 |
pllain | boolean | 否 | 是否搜索纯文本,否即支持模式匹配搜索,不写默认为 false |
返回值 | 类型 | 说明 |
---|---|---|
num1 | number/nil | pattern 位于 s 的起点位置,nil 为没找到 |
num2 | number/nil | pattern 位于 s 的终点位置, nil 为没找到 |
模式匹配用法
参数 | 说明 |
---|---|
. | 任意字符 |
%s | 空白符 |
%p | 标点字符 |
%c | 控制字符 |
%d | 数字 |
%x | 十六进制数字 |
%z | 代表 0 的字符 |
%a | 字母 |
%l | 小写字母 |
%u | 大写字母 |
%w | 字母和数字 |
函数用例
num1,num2 = string.find("bbaaadd","aaa")
if num1~= nil and num2~= nil then
dialog("开始位置:"..num1.."\r\n".."结束位置:"..num2,5000)
elsedialog("未找到",5000)
end
函数:string.format 格式化字符串
函数名称:格式化字符串
函数功能:将字符串进行格式化,返回一个类似 printf 的格式化字符串
函数方法
st = string.find(str,arg)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str | string | 是 | 待格式化的字符串 / 模式匹配 |
arg | - | 是 | 任意内容,需要与 str 模式匹配支持的类型(number/string)相同 |
模式匹配用法
参数 | 类型 |
---|---|
%c | 接收一个数字, 并将其转化为 ASCII 码表中对应的字符 |
%d、%i | 接收一个数字并将其转化为有符号的整数格式 |
%o | 接收一个数字并将其转化为八进制数格式 |
%u | 接收一个数字并将其转化为无符号整数格式 |
%x | 接收一个数字并将其转化为十六进制数格式, 使用小写字母 |
%X | 接收一个数字并将其转化为十六进制数格式, 使用大写字母 |
%e | 接收一个数字并将其转化为科学记数法格式, 使用小写字母 e |
%E | 接收一个数字并将其转化为科学记数法格式, 使用大写字母 E |
%f | 接收一个数字并将其转化为浮点数格式 |
%g(%G) | 接收一个数字并将其转化为 %e(%E 对应 %G) 及 %f 中较短的一种格式 |
%q | 接收一个字符串并将其转化为可安全被 Lua 编译器读入的格式 |
%s | 接收一个字符串并按照给定的参数格式化该字符串 |
返回值 | 类型 | 说明 |
---|---|---|
st | string/nil | 格式化后的字符串 |
函数用例
st = string.format("just do %s","it")
dialog(st,5000)
注意事项
- 选项 c,d,e,E,f,g,G,i,o,u,x,X 只接数字作为参数,而 q,s 接收字符串作为参数
函数:string.gmatch 全局模式匹配
函数名称:全局模式匹配
函数功能:创建并返回一个迭代器,可用于 for 语句中迭代的进行全局查找
函数方法
str = string.match(s,pattern)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
s | string | 是 | 原字符串 |
pattern | string | 是 | 待查找的字符串或模式匹配 |
返回值 | 类型 | 说明 |
---|---|---|
str | string/nil | 格式化后的字符串,nil 为没找到 |
模式匹配用法
参数 | 说明 |
---|---|
. | 任意字符 |
%s | 空白符 |
%p | 标点字符 |
%c | 控制字符 |
%d | 数字 |
%x | 十六进制数字 |
%z | 代表 0 的字符 |
%a | 字母 |
%l | 小写字母 |
%u | 大写字母 |
%w | 字母和数字 |
函数用例
s = "a1 B c d"
for w in string.gmatch(s, "%l+") dodialog(w,5000)
end
函数:string.gsub 字符串替换
函数名称:字符串替换
函数功能:字符串替换
函数方法
str,num = string.gsub(s,pattern,repl,n)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
s | string/table/number | 是 | 原字符串 |
pattern | string/table/number | 是 | 待查找的字符串或模式匹配 |
repl | string/table/number | 是 | 待替换的字符串 |
n | number | 否 | 替换次数 |
模式匹配用法
参数 | 说明 |
---|---|
. | 任意字符 |
%s | 空白符 |
%p | 标点字符 |
%c | 控制字符 |
%d | 数字 |
%x | 十六进制数字 |
%z | 代表 0 的字符 |
%a | 字母 |
%l | 小写字母 |
%u | 大写字母 |
%w | 字母和数字 |
返回值 | 类型 | 说明 |
---|---|---|
str | string/number/nil | 替换后的内容 |
num | number | 替换次数 |
函数用例
str,num=string.gsub("juaa do it","aa","st")
dialog("替换后的内容:"..str.."\r\n".."替换次数:"..num,5000)
函数:string.len 获取字符串长度
函数名称:获取字符串长度
函数功能:获取字符串长度
函数方法
num = string.len(str)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str | string | 是 | 需要计算的字符串 |
返回值 | 类型 | 说明 |
---|---|---|
num | number/nil | 字符串长度 |
函数用例
str="JUST DO IT"
num = string.len(str)
dialog("字符串长度:"..num,5000)
函数:string.match 字符串查找
函数名称:字符串查找
函数功能:字符串查找
函数方法
str =string.match(s,pattern,in)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
s | string | 是 | 原字符串 |
pattern | string | 是 | 待查找的字符串或模式匹配 |
in | string | 否 | 从 s 的第 in 个字符开始搜索,不写默认为 1 |
返回值 | 类型 | 说明 |
---|---|---|
str | string | 找到结果返回整个配对字符串,失败返回 nil |
模式匹配用法
参数 | 说明 |
---|---|
. | 任意字符 |
%s | 空白符 |
%p | 标点字符 |
%c | 控制字符 |
%d | 数字 |
%x | 十六进制数字 |
%z | 代表 0 的字符 |
%a | 字母 |
%l | 小写字母 |
%u | 大写字母 |
%w | 字母和数字 |
函数用例
s = "您申请了邮箱注册,验证码为:123abc,两分钟内有效。请在注册页面中输入以完成注册。"
str = string.match(s,"%w+")
dialog(str,5000)
函数:string.rep 复制字符串
函数名称:复制字符串
函数功能:复制字符串
函数方法
str = string.rep(s,n,sep)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
s | string | 是 | 原字符串 |
n | number | 是 | 复制次数 |
sep | string | 否 | 间隔依据,不写默认为空 |
返回值 | 类型 | 说明 |
---|---|---|
str | string | 复制后的字符串 |
函数用例
s = "go"
str = string.rep(s,3," ")
dialog(str,5000)
函数:string.reverse 字符串反转
函数名称:字符串反转
函数功能:将字符串倒序显示
函数方法
str2 = string.reverse(str1)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str1 | string | 是 | 需要转换的内容 |
返回值 | 类型 | 说明 |
---|---|---|
str2 | string | 转换后的内容 |
函数用例
str1 = "ti od tsuj"
str2 = string.reverse(str1)
dialog("转换后内容:"..str2,5000)
函数:string.sub 字符串截取
函数名称:字符串截取
函数功能:按照规则截取字符串
函数方法
str = string.sub(s,i,j)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
s | string | 是 | 待截取的字符串 |
i | number | 是 | 开始截取位置 |
j | string | 否 | 停止截取位置,不写默认为 i |
返回值 | 类型 | 说明 |
---|---|---|
str | string | 截取的字符串 |
函数用例
s="just do it"
str = string.sub(s,6,7)
dialog("截取的内容:"..str,5000)
函数:string.upper 小写字母转大写
函数名称:小写字母转大写
函数功能:将所有小写字母转成大写
函数方法
str2 = string.upper(str1)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str1 | string | 是 | 需要转换的内容 |
返回值 | 类型 | 说明 |
---|---|---|
str2 | string | 转换后的内容 |
函数用例
str1 = "just do it"
str2 = string.upper(str1)
dialog("转换后的大写字母内容:"..str2,5000)
函数:string.lower 大写字母转成小写
函数名称:大写字母转成小写
函数功能:将所有大写字母转成小写
函数方法
str2 = string.lower(str1)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str1 | string | 是 | 需要转换的内容 |
返回值 | 类型 | 说明 |
---|---|---|
str2 | string | 转换成大写后的内容 |
函数用例
str1="JUST DO IT"
str2 = string.lower(str1)
dialog("转换后的内容:"..str2,5000)
函数:string.byte 字符串转 ASCII 编码
函数名称:字符串转 ASCII 编码
函数功能:将字符串进行 ASCII 编码
函数方法
num1,num2,num3,… = string.byte(str.i,j)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str | string | 是 | 需要进行编码的字符串 |
i | number | 是 | 截取起点,不写默认值为 1 |
j | number | 是 | 截取终点,不写默认值为 i |
返回值 | 类型 | 说明 |
---|---|---|
num | number/nil | 编码后的字符串 |
函数用例
num1,num2,num3=string.byte("ceshi",1,3)
dialog(num1.."\r\n"..num2.."\r\n"..num3,5000)
函数:string.char ASCII 编码转字符串
函数名称:ASCII 编码转字符串
函数功能:将 ASCII 编码转成字符串
函数方法
str = string.char(num1,num2,num3,…)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
num | number | 是 | 需要进行操作的 ASCII 编码,可以是多个数据 |
返回值 | 类型 | 说明 |
---|---|---|
num | number/nil | 转码后的字符串 |
函数用例
num1,num2,num3 = string.byte("ceshi",1,3)
dialog(num1.."\r\n"..num2.."\r\n"..num3,5000)
mSleep(1000)
str = string.char(num1,num2,num3)
dialog(str,5000)
table相关函数
函数:table.concat 数组连接
函数名称:连接数组
函数功能:连接数组
函数方法
str = table.concat (tb,sep,i, j)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
tb | table | 是 | 待操作数组 |
sep | string | 是 | 分割的字符 |
i | number | 否 | tb[i] 起点,默认值: 1 |
j | number | 否 | tb[j] 终点,, 默认值: #tb |
返回值 | 类型 | 说明 |
---|---|---|
str | string | 连接后的字符串 |
函数示例
tb = {"a","b","c","d",1,2,3,4}
str = table.concat(tb,"|")
dialog(str,5000)
函数:table.insert 插入数据到数组
函数名称:插入数据到数组
函数功能:插入数据到数组
函数方法
table.insert (tab_table, pos,value)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
tab_table | string | 是 | 待操作的数组 |
pos | number | 否 | 待插入位置,不写默认值为 #tab_table |
value | value | 否 | 待插入的内容 |
函数示例
tab_table = {1,2,3,4,5,6,7,8,9,10}
table.insert(tab_table,11)
dialog(tab_table[11],5000)
基本函数
函数:mSleep 延时
函数名称:等待延迟,延时
函数功能:发送系统等待事件,单位毫秒
函数方法
mSleep(interval)
返回值:无
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
interval | number | 是 | 单位为毫秒,脚本暂停执行的时间长度 |
函数用例
延迟 1 秒和 1 分钟
mSleep(1000); --延迟 1 秒钟
mSleep(60*1000) --此函数不适合用于长时间的精确计时,如长时间的精确计时请使用 os.time
注意事项
- 延迟函数的使用与各类函数的使用息息相关,尤其是触摸类函数。脚本一般是用来模拟人在界面上的操作,因此要考虑人在各种情况下的延迟、界面加载时的响应时间。
- 延迟间隔不可过短,当 interval <= 50 ms 时,延迟精确度大幅下降,当 interval <= 16 ms 时,实际延迟约在 16 ms 左右。
- 请勿将此函数用于长时间的精确计时。
- 1 秒 (s) = 1000 毫秒 (ms)。
函数:mSleep 延时
函数名称:等待延迟,延时
函数功能:发送系统等待事件,单位毫秒
函数方法
mSleep(interval)
返回值:无
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
interval | number | 是 | 单位为毫秒,脚本暂停执行的时间长度 |
函数用例
延迟 1 秒和 1 分钟
mSleep(1000); --延迟 1 秒钟
mSleep(60*1000) --此函数不适合用于长时间的精确计时,如长时间的精确计时请使用 os.time
注意事项
- 延迟函数的使用与各类函数的使用息息相关,尤其是触摸类函数。脚本一般是用来模拟人在界面上的操作,因此要考虑人在各种情况下的延迟、界面加载时的响应时间。
- 延迟间隔不可过短,当 interval <= 50 ms 时,延迟精确度大幅下降,当 interval <= 16 ms 时,实际延迟约在 16 ms 左右。
- 请勿将此函数用于长时间的精确计时。
- 1 秒 (s) = 1000 毫秒 (ms)。
函数:dialog 提示框
函数名称:对话框,弹窗,提示框
函数功能:弹出提示信息
函数方法
dialog(text,timeout)
返回值:无
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
text | string | 否 | 提示信息,将在设备屏幕上以弹窗形式显示 |
timeout | number | 否 | 提示信息显示的时间,单位:毫秒,不限时间请填 0 |
脚本实例
欢迎使用
--Android 系统在部分设备上需要在系统设置里开启悬浮窗权限方可正常使用此函数
dialog("欢迎使用积木编程!",5000);
mSleep(1000);
dialog("对话框。\n 提示信息可以换行");
注意事项
-
time 参数时间一般在 2 秒(2000 毫秒)以上,否则出现时间太短看不清楚。
-
该函数仅供呈现提示信息给用户,不可接收返回值。
-
该函数所产生的提示窗口显示的时候会影响当前屏幕取色,请在合理的位置使用该函数。
-
关于转义字符:\r \n 为换行,请查阅 Lua 转义字符表。
函数:showTextView 简易文字视图
函数功能:显示自定义的文字内容
函数方法
showTextView(text,id,x1,y1,x2,y2,align,color,bgdcolor,size,kind,alpha,fwType,radius)
返回值:无
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
text | string | 是 | 需要显示的文字内容 |
x1 | number | 否 | 窗口左上角顶点坐标横坐标,不写默认为 0 |
y1 | number | 否 | 窗口左上角顶点坐标纵坐标,不写默认为 0 |
x2 | number | 否 | 窗口右下角顶点坐标横坐标,不写默认为 200 |
y2 | number | 否 | 窗口右下角顶点坐标纵坐标,不写默认为 50 |
align | string | 否 | 对齐方式,不写默认为 center, left - 左对齐;right - 右对齐;center - 居中 |
color | string | 否 | 文字颜色 16 进制值,填空字符串默认为黑色(ffffff) |
bgcolor | string | 否 | 视图背景色 16 进制值,填空字符串默认为透明(000000) |
size | number | 否 | 字号,填 0 默认值为 15 |
kind | number | 否 | 字体类型,不写默认为 0,0 - 标准;1- 粗体 |
alpha | number | 否 | 背景色透明度 0 - 1,不写默认为 0.5 |
fwType | number | 否 | 窗口是否可以移动,默认为 1,1 - 窗口可移动;0 - 窗口不可移动 |
函数用例
showTextView("测试浮动窗口",100,100,600,300,"center","FFFFFF","000000",20,1,1,1,50)
mSleep(1000)
函数:closeTextView 关闭所有视图
函数功能:关闭所有视图
函数方法
closeTextView()
函数用例
showTextView("测试浮动窗口",100,100,600,300,"center","FFFFFF","000000",20,1,1,1,50)
mSleep(5000)
closeTextView()
函数:getRndNum 获取随机数
函数名称:获取随机数
函数功能:获取真随机数,随机数值
函数方法
num = getRndNum(min,max);
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
min | number | 是 | 随机范围的整数最小值 |
max | number | 是 | 随机范围的整数最大值 |
参数 | 类型 | 说明 |
---|---|---|
num | number | 获取到的随机数 |
函数用例
num = getRndNum(1,100) -- 随机获取一个 1 - 100 之间的数字
dialog(num,5000)
模拟点击
函数:event.tap 点击(仅支持 7 及其以上系统)
函数名称:点击
函数功能: 模拟点击屏幕,按下抬起一次
函数方法
event.tap(x,y)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
x | number | 是 | 屏幕横坐标 |
y | number | 是 | 屏幕纵坐标 |
函数用例
点击屏幕
--仅支持安卓 7 及其以上系统
--在坐标 (150, 550)按下、抬起
event.tap(150, 550);
mSleep(30)
注意事项
-
点击后可以加适量的延时
-
仅支持安卓 7 及其以上系统
函数:event.moveTo 滑动(仅支持 7 及其以上系统)
函数名称:滑动
函数功能:两点之间直线滑动
函数方法
event.moveTo(x1,y1,x2,y2)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
x1 | number | 是 | 屏幕起点横坐标 |
y1 | number | 是 | 屏幕起点纵坐标 |
x2 | number | 是 | 屏幕终点横坐标 |
y2 | number | 是 | 屏幕终点纵坐标 |
函数用例
-- 仅支持安卓 7 及其以上系统
--从(100,100)点滑动到(300,100)点
event.moveTo(100,100,300,100)
注意事项
- 仅支持安卓 7 及其以上系统
函数:event.press 长按(仅支持安卓 7 及其以上系统)
函数名称:长按
函数功能:在一点进行长按
函数方法
event.press((x,y,time)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
x | number | 是 | 横坐屏幕标 |
y | number | 是 | 屏幕纵坐标 |
time | number | 否 | 长按时间,单位:毫秒,不写默认为 1000 毫秒 |
函数用例
--在点(100,100)长按 3 秒
--仅支持安卓 7 及其以上系统
event.press(100,100,3000)
注意事项
-
仅支持安卓 7 及其以上系统
-
1 秒 = 1000 毫秒
函数:widget.find 根据属性组合查找控件
函数功能: 根据属性组合查找控件
函数方法
wid,tab = widget.find(tb)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
tb.id | string | 否 | 控件 ID,可以使用 IDE 的控件节点进行获取 |
tb.text | string | 否 | 文本,可以使用 IDE 的控件节点进行获取 |
tb.type | string | 否 | 类型,可以使用 IDE 的控件节点进行获取 |
tb.desc | string | 否 | 描述,可以使用 IDE 的控件节点进行获取 |
tb.path | string | 否 | 路径,可以使用 IDE 的控件节点进行获取 |
tb.rule | number | 否 | 默认为 0 - 完全匹配,1 - 部分匹配,2 - 开头匹配, 3 - 结尾匹配,仅支持 text、type、desc 参数 |
tb.long-clickable | string | 否 | 是否可以长按,false - 不可以长按,ture - 可以长按, 仅支持 v1.0.1 及其以上版本 |
tb.clickable | string | 否 | 是否可以点击,fasle - 不可点击,true - 可以点击, 仅支持 v1.0.1 及其以上版本 |
tb.scrollable | string | 否 | 是否可以滚动,false - 不可以滚动,true - 可以滚动, 仅支持 v1.0.1 及其以上版本 |
tb.editable | string | 否 | 是否可以编辑,false - 不可以编辑,ture - 可以编辑, 仅支持 v1.0.1 及其以上版本 |
tb.checkable | string | 否 | 是否可以选中,false - 不可以选中,true - 可以选中, 仅支持 v1.0.1 及其以上版本 |
tb.which | number | 否 | 不写默认为 1,指定第几个控件, 仅支持 v1.0.2 及其以上版本客户端 |
返回值 | 类型 | 说明 |
---|---|---|
wid | userdata/nil | 查找成功则返回控件对象,失败返回空 |
tab | table | 返回 id、text、type、desc 等包含 tb 的所有信息, 仅支持 v1.0.3 及其以上版本客户端 |
函数用例
mSleep(1000)
wid,tab =widget.find({["text"]="浏览器"})
if wid ~= nil thenmSleep(1000)toast("控件已找到")mSleep(1000)--点击控件widget.click(wid)for k,v in pairs(tab) dotoast(k .. ":" .. (type(v) == "boolean" and (v and "true" or "false") or v),5)mSleep(2000)end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
函数:widget.desc 根据描述属性查找控件
函数功能: 根据描述属性查找控件
函数方法
wid= widget.desc(desc,rule);
wid= widget.desc(desc,{rule,which});
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
desc | string | 是 | 要查找的描述信息,可以使用 IDE 的控制节点进行获取 |
rule | number | 否 | 不写默认为 0 - 完全匹配 ,1 - 部分匹配,2 - 完全匹配, 3 - 开头匹配,4 - 结尾匹配 |
which | number | 否 | 不写默认为 1,指定第几个控件, 仅支持 v1.0.2 及其以上版本客户端 |
函数用例
--在显示积木编程图标的页面运行mSleep(1000)
desc = "积木编程"
wid = widget.desc(desc,1)
--wid = widget.desc(desc,{["rule"]=1,["which"]=1})
if wid ~= nil thenmSleep(1000)toast("控件已找到")mSleep(1000)--点击控件widget.click(wid)
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.id 根据属性查找控件
函数功能: 根据属性查找控件
函数方法
wid = widget.id(id)
wid = widget.id(id,{which})
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
id | string | 是 | 要查找的控件 ID,可以使用 IDE 的控制节点进行获取 |
which | number | 否 | 不写默认为 1,指定第几个控件, 仅支持 v1.0.2 及其以上版本客户端 |
返回值 | 类型 | 说明 |
---|---|---|
wid | userdata/nil | 查找成功则返回控件对象,失败返回空 |
函数用例
--脚本页面运行,找右上角的新建脚本按钮mSleep(1000)
id = "com.play4u.luabox:id/iv_script_new"
wid = widget.id(id)
--wid = widget.id(id,{["which"]=1})
if wid ~= nil thenmSleep(1000)toast("控件已找到")mSleep(1000)--点击控件widget.click(wid)
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.text 根据文本属性查找控件
函数功能: 根据文本属性查找控件
函数方法
wid = widget.text(text,rule)
wid = widget.text(text,{rule,which})
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
text | string | 是 | 文本属性,可以使用 IDE 的控件节点进行获取 |
rule | number | 否 | 不写默认为 0 - 完全匹配 ,1 - 部分匹配,2 - 开头匹配,3 - 结尾匹配 |
which | number | 否 | 不写默认为 1,指定第几个控件,仅支持 v1.0.2 及其以上版本客户端 |
返回值 | 类型 | 说明 |
---|---|---|
wid | userdata/nil | 查找成功则返回控件对象,失败返回空 |
函数用例
--在脚本页面,找左上角的脚本文字mSleep(1000)
text="脚本"
wid = widget.text(text,1)
--wid = widget.text(text,1,{["which"]=1})
if wid ~= nil thenmSleep(1000)toast("控件已找到")mSleep(1000)--点击控件widget.click(wid)
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.region 获取控件的区域属性
函数功能: 获取控件区域坐标范围
函数方法
x1,y1,x2,y2 = widget.region(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
x1 | string | 区域左上角横坐标,找不到返回 nil |
y1 | string | 区域左上角纵坐标,找不到返回 nil |
x2 | string | 区域右下角横坐标,找不到返回 nil |
y2 | string | 区域有下级角纵坐标,找不到返回 nil |
函数用例
--在脚本页面,找左上角的脚本文字mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil then
x1,y1,x2,y2 = widget.region(wid)
if x1 ~= nil thenevent.tap(x1,y1);
elsemSleep(1000)toast("区域获取为空",5)mSleep(5000)
end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.longclickable 判断控件是否可以长按
函数功能: 判断控件获取是否可以长按
函数方法
flag = widget.longclickable(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 可以长按,false - 不可以长按 |
函数用例
--在脚本页面,右上角的创建脚本按钮mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil thenflag = widget.longclickable(wid)if flag thenmSleep(1000)toast("此控件可以长按",5)mSleep(5000) elsemSleep(1000)toast("此控件不支持长按",5)mSleep(5000) end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.checkable 判断控件是否可勾选
函数功能: 判断控件是否可以勾选
函数方法
flag = widget.checkable(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 可以勾选,false - 不可以勾选 |
函数用例
--在删除脚本页面,长按要删除的脚本可以进入此页面,全选按钮mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/cb_select"})
if wid ~= nil thenflag = widget.checkable(wid)if flag thenmSleep(1000)toast("此控件可以勾选",5)mSleep(5000) elsemSleep(1000)toast("此控件不支持勾选",5)mSleep(5000) end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.scrollable 判断控件是否可滚动
函数功能: 判断控件是否可以滚动
函数方法
flag = widget.scrollable(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 可以滚动,false - 不可以滚动 |
函数用例
--脚本界面运行mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/item_rl_top"})
if wid ~= nil thenflag = widget.scrollable(wid)if flag thenmSleep(1000)toast("此控件可以滚动",5)mSleep(5000) elsemSleep(1000)toast("此控件不可以滚动",5)mSleep(5000) end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.editable 获取控件是否可以输入
函数功能: 判断控件是否可以输入
函数方法
flag = widget.editable(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | usedata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 可以输入文字,false - 不支持输入文字 |
函数用例
--脚本页面 点击新建脚本按钮 输入文字mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil thenwidget.click(wid)mSleep(3000)wid1 = widget.find({["id"]="com.play4u.luabox:id/et_content"})--判断新建脚本页面是否打开if wid1 ~= nil then--判断是否支持输入文字flag = widget.editable(wid1)if flag thenmSleep(1000)toast("此控件支持输入",5)mSleep(5000)--输入文字widget.setText(wid,"输入")elsemSleep(1000)toast("此控件不支持输入",5)mSleep(5000)endelsemSleep(1000)toast("控件未找到",5)mSleep(5000)end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.visibleToUser 控件是否可见
函数功能: 判断控件是否可见
函数方法
flag = widget.visibleToUser(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | usedata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 可见控件,false - 不可见控件 |
函数用例
--脚本页面新脚本按钮mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil thenflag = widget.visibleToUser(wid)if flag thenmSleep(1000)toast("可见控件",5)mSleep(5000) elsemSleep(1000)toast("不可见控件",5)mSleep(5000) end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.enabled 判断控件是否可以激活
函数功能: 判断控件是否可以激活
函数方法
flag = widget.enabled(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | usedata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 可以激活,false - 不可以激活 |
函数用例
--脚本页面运行mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil thenflag = widget.enabled(wid)if flag thenmSleep(1000)toast("此控件可以激活",5)mSleep(5000) elsemSleep(1000)toast("此控件不可以激活",5)mSleep(5000) end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.clickable 判断控件是否可点击
函数功能: 判断控件是否可以点击
函数方法
flag = widget.clickable(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 可以点击,false - 无法点击 |
函数用例
--在脚本页面,右上角的新建脚本按钮是否可以点击mSleep(5000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil thenflag = widget.clickable(wid)if flag thenmSleep(1000)toast("此控件可以点击",5)mSleep(5000)--点击控件widget.click(wid)elsemSleep(1000)toast("此控件不支持点击",5)mSleep(5000)end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.selected 获取控件选中状态
函数功能: 判断控件是否可以选中
函数方法
flag = widget.selected(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 可以选中,false - 不可以选中 |
函数用例
--脚本界面运行mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/item_rl_top"})
if wid ~= nil thenflag = widget.selected(wid)if flag thenmSleep(1000)toast("此控件可以选中",5)mSleep(5000) elsemSleep(1000)toast("此控件不可以选中",5)mSleep(5000) end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.checked 判断控件勾选状态
函数功能: 判断控件是否勾选
函数方法
flag = widget.checked(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 已勾选,false - 未勾选 |
函数用例
--在删除脚本页面,全选按钮是否勾选mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/cb_select"})
if wid ~= nil thenflag = widget.checked(wid)if flag thenmSleep(1000)toast("此控件已勾选",5)mSleep(5000) elsemSleep(1000)toast("此控件未勾选",5)mSleep(5000) end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.click 点击控件
函数功能:点击控件
函数方法
widget.click(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | string | 是 | 控件对象 |
函数用例
--脚本页面点击新建脚本按钮mSleep(1000)
wid=widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil then--判断控件是否可以点击flag = widget.clickable(wid)if flag thenmSleep(1000)toast("此控件支持点击",5)mSleep(5000) widget.click(wid)elsemSleep(1000)toast("此控件不支持点击",5)mSleep(5000) end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.setText 对控件输入文本
函数功能:在控件中输入文字
函数方法
widget.setText(wid,text)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
text | string | 是 | 需要输入的文字 |
函数用例
--脚本页面 点击新建脚本按钮 输入文字mSleep(1000)
wid = widget.find({["id"]="com.play4u.luabox:id/iv_script_new"})
if wid ~= nil thenwidget.click(wid)mSleep(3000)wid1 = widget.find({["id"]="com.play4u.luabox:id/et_content"})--判断新建脚本页面是否打开if wid1 ~= nil then--判断是否支持输入文字flag = widget.editable(wid1)if flag thenmSleep(1000)toast("此控件可以输入文字",5)mSleep(5000)--输入文字widget.setText(wid,"输入")elsemSleep(1000)toast("此控件不支持输入",5)mSleep(5000)endelsemSleep(1000)toast("控件未找到",5)mSleep(5000)end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.longClick 长按控件
函数功能:长按控件
函数方法
widget.click(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
函数用例
--脚本界面运行mSleep(1000)
wid=widget.find({["id"]="com.play4u.luabox:id/rrl_create_script"})
if wid ~= nil then--判断是否可以长按flag = widget.longclickable(wid)if flag thenmSleep(1000)toast("可以长按",5)mSleep(5000)widget.longClick(wid)elsemSleep(1000)toast("此控件不支持长按",5)mSleep(5000)end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.scrollForward 向前滑动控件
函数功能:向前滑动
函数方法
widget.scrollForward(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
函数用例
--脚本页面运行mSleep(1000)
wid=widget.find({["id"]="com.play4u.luabox:id/item_rl_top"})
if wid ~= nil then--判断控件是否可以滑动flag = widget.scrollable(wid)if flag thentoast("可以滑动",5)widget.scrollForward(wid)elsemSleep(1000)toast("此控件不支持滑动",5)mSleep(5000)end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
函数:widget.scrollBackward 向后滑动控件
函数功能:向后滑动
函数方法
widget.scrollBackward(wid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
wid | userdata | 是 | 控件对象 |
函数用例
--脚本页面运行
mSleep(1000)
wid=widget.find({["id"]="com.play4u.luabox:id/item_rl_top"})
if wid ~= nil then--判断控件是否可以滑动flag = widget.scrollable(wid)if flag thentoast("可以滑动",5)widget.scrollBackward(wid)elsemSleep(1000)toast("此控件不支持滑动",5)mSleep(5000)end
elsemSleep(1000)toast("控件未找到",5)mSleep(5000)
end
注意事项
- 使用此函数不要使用 widget 做变量,否则会导致报错。
应用
函数:app.getName 获取应用名称
函数名称: 获取应用名称
函数功能: 根据应用包名获取应用名称
函数方法
name = app.getName(bid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
bid | string | 是 | 应用包名 |
返回值 | 类型 | 说明 |
---|---|---|
name | string | 应用名称 |
函数用例
bid = app.getPackageName("积木编程")
name = app.getName(bid)
dialog(name,5000)
函数:app.getVer 获取应用版本
函数名称: 获取应用版本
函数功能: 根据应用包名获取应用版本号
函数方法
versionName = app.getVer(bid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
bid | string | 是 | 应用包名 |
返回值 | 类型 | 说明 |
---|---|---|
versionName | string | 应用版本号 |
函数用例
bid = app.getPackageName("积木编程")
versionName = app.getVer(bid)
dialog(versionName,5000)
函数:app.frontPackageName 获取前台应用包名
函数名称: 获取前台应用包名
函数功能: 获取前台应用包名
函数方法
versionName = app.frontPackageName()
返回值 | 类型 | 说明 |
---|---|---|
versionName | string | 前台应用包名 |
函数用例
versionName = app.frontPackageName()
dialog(versionName,5000)
函数:app.runApp 运行应用
函数名称: 运行应用
函数功能: 打开一个应用程序
函数方法
flag = app.runApp(bid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
bid | string | 是 | 应用包名 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 运行成功,false - 运行失败 |
函数用例
--启动设置
flag = app.runApp("com.android.settings")
if flag == true thendialog("启动成功",5000)
elsedialog("启动失败",5000)
end
函数:app.uninstallApp 卸载应用
函数名称: 卸载应用
函数功能: 卸载一个应用程序
函数方法
app.uninstallApp(bid)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
bid | string | 是 | 需要卸载的应用包名 |
函数用例
app.uninstallApp("com.touchsprite.android")
注意事项
- 如果要卸载的应用在前台或者后台时,无法通过此函数卸载。
函数:app.openURL 打开网址
函数名称:打开网络地址
函数功能:调用系统浏览器,打开一个指定网址
函数方法
app.openURL(url)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
ur | string | 是 | 需要打开的应用网址 |
函数用例
--打开 Luabox 官网
app.openURL("https://www.touchsprite.com/luabox")
文件IO函数
函数:file.isExist 判断文件(夹)是否存在
函数名称:判断文件(夹)是否存在
函数功能: 判断文件(夹)是否存在
函数方法
flag = file.isExist(path)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path | string | 是 | 需要判断的文件(夹)路径 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 文件(夹)存在,false - 文件(夹)不存在 |
函数用例
path = "/sdcard/LuaBox/Projects/"
flag = file.isExist(path)
if flag thendialog("文件夹存在",5000)
elsedialog("文件夹不存在",5000)
end
注意事项
函数:file.new 新建文件(夹)
函数名称:新建文件(夹)
函数功能: 在指定目录下新建文件(夹)
函数方法
flag = file.new(path)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path | string | 是 | 需要创建的文件(夹)路径 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 创建成功,false - 创建失败或者文件(夹)已存在 |
函数用例
path = "/sdcard/LuaBox/Projects/测/"
--创建文件夹
flag = file.new(path)
if flag thendialog("文件夹创建成功",5000)--创建文件path1 = "/sdcard/LuaBox/Projects/测/main.lua"flag1 = file.new(path1)if flag1 thendialog("文件创建成功",5000)elsedialog("文件创建失败或文件已存在",5000)end
elsedialog("文件夹创建失败或文件夹已存在",5000)
end
注意事项
- 如果文件(夹)已存在,不会再次进行创建,返回值为 false。
函数:file.readString 读文件返回字符串
函数名称:读文件返回字符串
函数功能:读文件操作,读取文件内容,返回全部内容的 string
函数方法
str = file.readString (path,encode)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path | string | 是 | 需要读取的文件路径 |
encode | string | 否 | 编码格式,不写默认为 utf-8 |
返回值 | 类型 | 说明 |
---|---|---|
str | string | 文件内容 |
函数用例
path1 = "/sdcard/LuaBox/Projects/测试/"
path2 = "/sdcard/LuaBox/Projects/测试/main.lua"
--创建文件夹
flag1 = file.new(path1)
mSleep(5000)
--创建文件
flag2 = file.new(path2)
str1 = "dialog(11)"
if flag1 and flag2 thendialog("文件夹及文件创建成功",5000)--写入文件内容file.writeString(path2,str1)mSleep(2000)str2 = file.readString (path2,"utf-8")dialog("文件写入成功".."\r\n".."文件内容:"..""..str2,5000)
elsedialog("文件(夹)创建失败或者文件(夹)已存在",5000)
end
注意事项
函数:file.writeString 保存字符串到文件
函数名称:保存字符串到文件
函数功能: 将字符串 string 内容存入文件
函数方法
str = file.writeString (path,str,encode)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path | string | 是 | 需要写入的文件路径 |
str | string | 是 | 需要写入的文件内容 |
encode | string | 否 | 编码格式,不写默认为 utf-8 |
函数用例
path1 = "/sdcard/LuaBox/Projects/测试/"
path2 = "/sdcard/LuaBox/Projects/测试/main.lua"
--创建文件夹
flag1 = file.new(path1)
mSleep(5000)
--创建文件
flag2 = file.new(path2)
str1 = "dialog(11)"
if flag1 and flag2 thendialog("文件夹及文件创建成功",5000)--写入文件内容file.writeString(path2,str1)mSleep(2000)str2 = file.readString (path2,"utf-8")dialog("文件写入成功".."\r\n".."文件内容:"..""..str2,5000)
elsedialog("文件(夹)创建失败或者文件(夹)已存在",5000)
end
注意事项
-
文件不存在会创建文件再写入内容
-
需要保证目录存在,否则会写入失败
函数:file.rename 重命名文件
函数名称:重命名文件
函数功能: 修改文件名称
函数方法
flag = file.writeString (path,name)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path | string | 是 | 需要修改的文件路径 |
str | string | 是 | 修改后的文件名称 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 修改成功,false - 修改失败 |
函数用例
path = "/sdcard/LuaBox/Projects/123/11.lua"
--判断文件是否存在
flag1 = file.isExist(path)
if flag1 then--修改文件名称flag2 = file.rename(path,"22.lua")if flag2 thendialog("修改成功",5000)elsedialog("修改失败",5000)end
elsedialog("文件不存在",5000)
end
注意事项
函数:file.copy 复制文件
函数名称:复制文件
函数功能: 复制文件
函数方法
flag = file.copy (oldpath,newpath)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
oldpath | string | 是 | 待复制文件的路径 |
newpath | string | 是 | 要复制到的文件路径,注意先判断是否有重名文件或文件夹。 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 复制成功,false - 复制失败 |
函数用例
--待复制文件的路径
oldpath = "/sdcard/LuaBox/Projects/1/error.log"
--要复制到的文件夹
newpath = "/sdcard/LuaBox/Projects/测试/"
--判断文件是否存在
flag1 = file.isExist(oldpath)
flag2 = file.isExist(newpath)
if flag1 and flag2 thenflag3=file.copy(oldpath,newpath.."1.log")if flag3 thendialog("复制成功",5000)elsedialog("复制失败",5000)end
elsedialog("文件(夹)不存在",5000)
end
注意事项
- 待复制和要复制到的文件路径必须带文件名,文件名和扩展名可修改。
函数:file.move 移动文件
函数名称:移动文件
函数功能:移动文件到新的目录下
函数方法
flag = file.move(oldpath,newpath)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
oldpath | string | 是 | 待移动文件的路径 |
newpath | string | 是 | 要移动到的文件路径,注意先判断是否有重名文件或文件夹。 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 移动成功,false - 移动失败 |
函数用例
--待移动文件的路径
oldpath = "/sdcard/LuaBox/Projects/1/error.log"
--要移动到的文件夹
newpath = "/sdcard/LuaBox/Projects/测试/"
--判断文件是否存在
flag1 = file.isExist(oldpath)
flag2 = file.isExist(newpath)
if flag1 and flag2 thenflag3=file.copy(oldpath,newpath.."error.log")if flag3 thendialog("移动成功",5000)elsedialog("移动失败",5000)end
elsedialog("文件(夹)不存在",5000)
end
注意事项
- 待移动和要移动到的文件路径必须带文件名,文件名和扩展名可修改。
函数:file.del 删除文件
函数名称:删除文件
函数功能:删除目录下的文件
函数方法
flag = file.del(path)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
oldpath | string | 是 | 待删除文件的路径 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 删除成功,false - 删除失败 |
函数用例
--待删除文件的路径
path = "/sdcard/LuaBox/Projects/测试/error.log"
--判断文件是否存在
flag1 = file.isExist(path)
if flag1 then--删除文件flag2 = file.del(path)if flag2 thendialog("删除成功",5000)elsedialog("删除失败",5000)end
elsedialog("文件不存在",5000)
end
函数:file.delFolder 删除文件夹
函数名称:删除文件夹
函数功能:删除目录下的文件夹
函数方法
flag = file.delFolderl(path)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
oldpath | string | 是 | 待删除文件夹的路径 |
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 删除成功,false - 删除失败 |
函数用例
--待删除文件夹的路径
path = "/sdcard/LuaBox/Projects/123/"
--判断文件夹是否存在
flag1 = file.isExist(path)
if flag1 then--删除夹文件flag2 = file.delFolder(path)if flag2 thendialog("删除成功",5000)elsedialog("删除失败",5000)end
elsedialog("文件夹不存在",5000)
end
函数:file.getSDCardPath 获取 SD 卡路径
函数名称:获取 SD 卡路径
函数功能:获取 SD 卡路径
函数方法
path = file.getSDCardPath()
返回值 | 类型 | 说明 |
---|---|---|
path | string | SD 卡路径 |
函数用例
path = file.getSDCardPath()
dialog(path,5000)
图片函数
函数:image.crop 裁剪图片
函数名称:裁剪图片
函数功能: 从图片对象截取部分新建拷贝图片对象
函数方法
img = image.crop(img1,x1,y1,x2,y2)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
img1 | userdata | 是 | 需要操作的图片对象 |
x1 | number | 是 | 截取图片对象左上角的横坐标 |
y1 | number | 是 | 截取图片对象左上角的纵坐标 |
x2 | number | 是 | 截取图片对象右下角的横坐标 |
y2 | number | 是 | 截取图片对象右下角的横坐标 |
返回值 | 类型 | 说明 |
---|---|---|
img | userdata/nil | 裁剪后的图片对象,失败返回 nil |
函数用例
path = "/sdcard/LuaBox/Projects/1/1.png"
flag = file.isExist(path)
if flag thenoldimg,msg = image.load(path)if oldimg ~= nil thennewimg = image.crop(oldimg,0,0,100,100)if newimg ~=nil thendialog("裁剪成功",5000)elsedialog("裁剪失败",5000)endelsedialog("转换失败:"..msg,5000)end
elsedialog("图片不存在",5000)
end
函数:image.findImage 图中找图
函数功能:在图片指定区域寻找另一张图像是否匹配
函数方法
x,y = image.findImage(img1,img2,deviation)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
img1 | userdata | 是 | 需要操作的图片对象 |
img2 | userdata | 是 | 将要寻找的图片的图片对象 |
deviation | number | 否 | 允许偏差范围,0 代表不允许存在偏差即完全匹配, 数字越大越容易找到,但准确度也会随之降低,最高值为 40000000 |
返回值 | 类型 | 说明 |
---|---|---|
x,y | number | 找到的图片的左上角顶点坐标,如未找到则返回 -1,-1 |
函数用例
img1 = image.snapshot()
if img1 ~= nil thenimg2= image.crop(img1,10, 10, 100, 100)x,y = image.findImage(img1,img2)if x~=-1 and x~=-1 thendialog("x:"..x.."\r\n".."y:"..y.."\r\n",5000)elsedialog("未找到",5000)end
elsedialog("截屏失败",5000)
end
注意事项
- 此函数实现原理:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/template_matching/template_matching.html
函数:image.findImageInRegion 误差找图
函数功能:在指定区域中,寻找指定的图案,返回其左上角顶点坐标
引擎版本:仅支持 v1.0.3 及其以上版本
函数方法
x,y = image.findImage(path,x1,y1,x2,y2,deviation)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path | userdata | 是 | 将要寻找的图片文件名 |
x1 | number | 是 | 找图区域左上角顶点屏幕横坐标 |
y1 | number | 是 | 找图区域左上角顶点屏幕纵坐标 |
x2 | number | 是 | 找图区域右下角顶点屏幕横坐标 |
y2 | number | 是 | 找图区域右下角顶点屏幕纵坐标 |
deviation | number | 否 | 相似度,范围:0 - 100,不写默认为 90,数字越大越不容易找到 |
返回值 | 类型 | 说明 |
---|---|---|
x,y | number | 找到的图片的左上角顶点坐标,如未找到则返回 -1,-1 |
函数用例
--全屏截图
img1 = image.snapshot()
path = "/sdcard/LuaBox/Projects/ceshi.png"
if img1 ~= nil then--裁剪img2=image.crop(img1,10, 10, 100, 100)if img2 thenimage.save(img2,path)mSleep(2000)--判断裁剪图片是否存在flag = file.isExist(path)if flag thenx,y = image.findImageInRegion(path,0,0,110,110,100)if x~=-1 and x~=-1 thentoast("x:"..x.."\r\n".."y:"..y,5)mSleep(2000)elsetoast("未找到",5)mSleep(2000)endelsetoast("保存文件失败,文件不存在",5)mSleep(2000)endelsetoast("裁剪失败",5)mSleep(2000)end
elsetoast("截屏失败",5)mSleep(2000)
end
函数:image.getColorRGB 获取图片对象某点 RGB 颜色
函数名称:获取图片对象指定坐标点的颜色
函数功能: 获取图片对象指定坐标点的颜色
函数方法
color = image.getColor(img,x,y)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
img | userdata | 是 | 需要操作的图片对象 |
x | number | 是 | 将获取颜色值的屏幕横坐标 |
y | number | 是 | 将获取颜色值的屏幕纵坐标 |
返回值 | 类型 | 说明 |
---|---|---|
r,g,b | number | 该点颜色的 R,G,B 值,十进制颜色值 |
函数用例
path = "/sdcard/LuaBox/Projects/1/1.png"
flag = file.isExist(path)
if flag thenimg= image.load(path)if img ~= nil thenr,g,b = image.getColorRGB(img,20,20)--转成十六进制dialog(string.format("%#x",r)..string.format("%x",g)..string.format("%x",b),5000)elsedialog("转换失败",5000)end
elsedialog("图片不存在",5000)
end
函数:image.load 从文件创建图片
函数功能: 将图片转成图片对象
函数方法
img = image.load(path)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path | string | 是 | 图片路径 |
返回值 | 类型 | 说明 |
---|---|---|
img | usedata/nil | 图片对象,失败显示空 |
函数用例
path = "/sdcard/LuaBox/Projects/1/1.png"
flag = file.isExist(path)
if flag thenimg= image.load(path)if img ~= nil thendialog("转换成功",5000)elsedialog("转换失败",5000)end
elsedialog("图片不存在",5000)
end
函数:image.save 保存图片
函数名称:保存图片
函数功能: 将图片对象转成图片
函数方法
image.save(img,path,quality)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
img | userdata | 是 | 图片对象 |
path | string | 是 | 要保存的图片路径和文件名,保存的路径必须已存在,不存在不会自动创建 |
quality | userdata | 否 | 图片质量,仅对 jpg 格式有效,参数范围:0.1 - 1 |
函数用例
path = "/sdcard/LuaBox/Projects/2/1.png"
flag = file.isExist(path)
if flag thenimg,msg = image.load(path)if img ~= nil thenpath1 = "/sdcard/LuaBox/Projects/1.png"image.save(img,path1)elsedialog("转换失败",5000)end
elsedialog("图片不存在",5000)
end
函数:image.setColor 设置图片色值
函数功能:设置图片对象指定坐标点的颜色值
函数方法
newimg = image.setColor(oldimg,x,y,color)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
oldimg | userdata | 是 | 需要操作的图片对象 |
x | number | 是 | 需要设置颜色值的图片对象的横坐标 |
y | number | 是 | 需要设置颜色值的图片对象的纵坐标 |
color | number | 是 | 需要设置的十六进制颜色值 |
返回值 | 类型 | 说明 |
---|---|---|
newimg | userdata/nil | 设置后的图片对象,,失败返回 nil |
函数用例
path = "/sdcard/LuaBox/Projects/1/1.png"
flag = file.isExist(path)
if flag thenimg,msg = image.load(path)if img ~= nil then--将 20,20 点颜色值设置为 0xff00ffnewimg = image.setColor(img,20,20,0xff00ff)if newimg ~= nil then dialog("成功")--获取颜色值color = image.getColor(newimg,20,20)--转成十进制dialog(string.format("20,20 颜色值为:0x%X",color),5000)dialog(color)elsedialog("失败")endelsedialog("转换失败:"..msg,5000)end
elsedialog("图片不存在",5000)
end
函数:image.size 获取图片对象尺寸
函数名称:获取图片对象的宽高
函数功能: 获取图片对象的宽度和高度
函数方法
w,h = image.size(img)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
img | userdata | 是 | 图片对象 |
返回值 | 类型 | 说明 |
---|---|---|
w | number | 图片对象的宽度 |
h | number | 图片对象的高度 |
函数用例
--全屏截图
img = image.snapshot()
if type(img) == "userdata" then w,h=image.size(img)dialog("w:"..w.."\r\n".."h:"..h,5000)
elsedialog("截屏失败",5000)
end
函数:image.snapshot 截取屏幕
函数功能:全屏截图返回图片对象
函数方法
img = image.snapshot()
返回值 | 类型 | 说明 |
---|---|---|
img | userdata/nil | 截取后的图片对象,失败返回 nil |
函数用例
img = image.snapshot()
if img ~= nil thendialog("成功",5000)
elsedialog("失败",5000)
end
模拟按键
函数:keycode.back 模拟按下返回键
函数名称:模拟按下返回键
函数功能: 点击一次返回键
函数方法
keycode.back()
注意事项
-
部分设备可能会出现无效的问题,已知模拟器调用此命令可能会失效。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:keycode.home 模拟按下 home 键
函数名称:模拟按下 home 键
函数功能: 点击一次 home 键
函数方法
keycode.home()
注意事项
-
部分设备可能会出现无效的问题,已知模拟器调用此命令可能会失效。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:keycode.notification 拉出通知栏
函数名称:拉出通知栏
函数功能: 下滑拉出通知栏
函数方法
keycode.notification()
注意事项
-
部分设备可能会出现无效的问题,已知模拟器调用此命令可能会失效。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:keycode.quickSetting 显示快速设置
函数名称:显示快速设置
函数功能: 下滑显示快速设置
函数方法
keycode.quickSetting()
注意事项
-
部分设备可能会出现无效的问题,已知模拟器调用此命令可能会失效。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:keycode.recent 打开最近任务
函数名称:打开最近任务
函数功能: 下滑显示最近任务
函数方法
keycode.recent()
注意事项
-
部分设备可能会出现无效的问题,已知模拟器调用此命令可能会失效。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:keycode.splitScreen 设备分屏
函数名称:设备分屏
函数功能: 分屏显示画面
函数方法
keycode.splitScreen()
注意事项
-
需要手机有分屏功能使用此函数才能生效。
-
部分设备可能会出现无效的问题,已知模拟器调用此命令可能会失效。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:keycode.power 弹出电源键菜单
函数名称:弹出电源键菜单
函数功能: 显示电源键菜单
函数方法
keycode.power()
注意事项
-
部分设备可能会出现无效的问题,已知模拟器调用此命令可能会失效。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
设备函数
函数:device.writePasteboard 写入剪贴板
函数名称:写入剪贴板
函数功能:对系统剪贴板进行写入操作
函数方法
device.writePasteboard(str);
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
str | string | 是 | 写入剪贴板字符串 |
函数用例
str1 = "测试写入剪贴板"
device.writePasteboard(str1)
--写入剪贴板后推荐加延时后再读取剪贴板,否则可能会出现读取错误的问题
mSleep(1000)
--读出剪贴板内容
str = device.readPasteboard();
--延迟 0.5 秒
mSleep(500);
dialog(str,5000);
注意事项
-
该函数将覆盖系统剪贴板,如有重要数据储存在剪贴板请及时备份。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.readPasteboard 读取剪贴板
函数名称:读取剪贴板
函数功能:对系统剪贴板进行读取操作
函数方法
str = device.readPasteboard()
返回值 | 类型 | 说明 |
---|---|---|
str | string | 剪贴板的内容 |
函数示例
写入并读取剪贴板内容
str1 = "测试写入剪贴板"
device.writePasteboard(str1)
--写入剪贴板后推荐加延时后再读取剪贴板,否则可能会出现读取错误的问题
mSleep(1000)
--读出剪贴板内容
str = device.readPasteboard();
--延迟 0.5 秒
mSleep(500);
dialog(str,5000);
注意事项
-
该函数将覆盖系统剪贴板,如有重要数据储存在剪贴板请及时备份。
-
目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.getOSVer 获取系统版本号
函数功能:获取系统版本号
函数方法
sysver = device.getOSVer()
返回值 | 类型 | 说明 |
---|---|---|
sysver | string | 返回系统版本号如:7.0 |
函数用例
sysver = device.getOSVer(); --获取系统版本
dialog(sysver,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.getLuaBoxVer 获得 LuaBox 版本号
函数功能:获得 LuaBox 当前版本
函数方法
version = device.getLuaBoxVer()
返回值 | 类型 | 说明 |
---|---|---|
version | string | 返回获得 LuaBox 当前版本如:1.0 |
函数用例
version = device.getLuaBoxVer()
dialog(version,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.getTotalMemory 获得设备内存总量
函数功能:获得设备内存总量
函数方法
total = device.getTotalMemory()
返回值 | 类型 | 说明 |
---|---|---|
total | string | 设备内存总量,单位:字节 |
函数用例
total = device.getTotalMemory()
dialog(total,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.getFreeMemory 获得设备空闲内存
函数功能:获得设备内存总量
函数方法
free = device.getFreeMemory()
返回值 | 类型 | 说明 |
---|---|---|
free | string | 设备空闲内存,单位:字节 |
函数用例
free = device.getFreeMemory()
dialog(free,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.isWake 判断屏幕是否亮屏
函数功能:判断屏幕是否亮屏
函数方法
bool = device.isWake()
返回值 | 类型 | 说明 |
---|---|---|
bool | string | true - 屏幕亮屏,false - 屏幕黑屏 |
函数用例
bool = device.isWake()
if bool thentoast("屏幕亮屏",2)mSleep(3000)
elsetoast("屏幕黑屏",2)mSleep(3000)
end
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.wake 唤醒屏幕
函数名称:唤醒屏幕
函数功能:唤醒设备 CPU、屏幕等,可以用来点亮屏幕
函数方法
device.wake()
函数用例
bool = device.isWake()
if bool thentoast("屏幕亮屏",2)mSleep(3000)
elsetoast("屏幕黑屏",2)mSleep(3000)--唤醒屏幕device.wake()
end
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.keepWake 保持屏幕常亮
函数名称:保持屏幕常亮
函数功能:保持屏幕常亮
函数方法
device.wake()
函数用例
device.keepWake()
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.setAlarmVolume 设置闹钟音量
函数名称:设置闹钟音量
函数功能:设置闹钟音量大小
函数方法
device.setAlarmVolume(vol)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
vol | number | 是 | 闹钟音量,范围 0~100 |
函数用例
--不同设备范围可能不同
device.setAlarmVolume(7)
vol = device.getAlarmVolume()
dialog(vol,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.getAlarmVolume 获取闹钟音量
函数名称:获取闹钟音量
函数功能:获取闹钟音量大小
函数方法
vol = device.getAlarmVolume()
返回值 | 类型 | 说明 |
---|---|---|
vol | number | 闹钟音量,范围 0~100 |
函数用例
--不同设备范围可能不同
device.setAlarmVolume(7)
vol = device.getAlarmVolume()
dialog(vol,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.batteryQuantity 获取设备剩余电量
函数名称:获取设备剩余电量
函数功能:获取设备剩余电量大小
函数方法
level = device.batteryQuantity()
返回值 | 类型 | 说明 |
---|---|---|
level | number | 当前设备剩余电量,范围:0 - 100 |
函数用例
level = device.batteryQuantity()
dialog(level,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.betteryCharging 获取设备充电状态
函数名称:获取设备充电状态
函数功能: 用于判断当前设备充电状态
函数方法
charging = device.betteryCharging()
返回值 | 类型 | 说明 |
---|---|---|
charging | boolean | true - 充电中,false - 未充电 |
函数用例
charging = device.betteryCharging()
if charging thendialog("充电中",5000)
elsedialog("未充电",5000)
end
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.getMediaVolume 获取媒体音量最大值
函数名称:获取媒体音量最大值
函数功能: 获取媒体音量最大值
函数方法
maxvol = device.getMediaVolume()
返回值 | 类型 | 说明 |
---|---|---|
maxvol | number | 媒体音量最大值 |
函数用例
maxvol = device.getMediaVolume()
dialog(maxvol,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.setMediaVolume 设置媒体音量
函数名称:设置媒体音量
函数功能: 设置媒体音量大小
函数方法
device.setMediaVolume(vol)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
vol | number | 是 | 要设置的设备音量 |
函数用例
device.setMediaVolume(7)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.getNotificationVolume 获取通知音量最大值
函数名称:获取通知音量最大值
函数功能: 获取通知音量最大值
函数方法
vol = device.getNotificationVolume()
返回值 | 类型 | 说明 |
---|---|---|
vol | number | 通知音量最大值 |
函数用例
--获取通知音最大音量
maxvol = device.getNotificationVolume()
dialog(maxvol,5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.setNotificationVolume 设置通知音量
函数名称:设置通知音量值
函数功能: 设置通知音量大小
函数方法
device.setNotificationVolume(vol)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
vol | number | 是 | 通知音量值 |
函数用例
device.setNotificationVolume(5)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.vibrator 手机震动
函数名称: 手机振动,震动
函数功能: 使手机振动一次
函数方法
device.vibrator(time)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
time | number | 是 | 震动时间,单位毫秒 |
函数用例
for i=1,5 dodevice.vibrator(1000)mSleep(1000)
end
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:device.cancelVibration 停止震动
函数名称: 停止震动
函数功能: 停止震动
函数方法
device.cancelVibration()
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
脚本控制
函数:runtime.exit 停止脚本
函数名称:停止脚本
函数功能:停止脚本
函数方法
runtime.exit()
函数用例
dialog("开始运行",5000)
runtime.exit()
dialog("运行不到这里",5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:runtime.restart 重载脚本
函数名称:重新加载运行脚本
函数功能:重新加载运行脚本
函数方法
runtime.restart()
函数用例
dialog("开始运行",3000)
mSleep(5000)
runtime.restart()
dialog("运行不到这里",5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
媒体
函数:runtime.restart 重载脚本
函数名称:重新加载运行脚本
函数功能:重新加载运行脚本
函数方法
runtime.restart()
函数用例
dialog("开始运行",3000)
mSleep(5000)
runtime.restart()
dialog("运行不到这里",5000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:media.jump 调整音频播放进度
函数名称:调整音频播放进度
函数功能: 跳转到指定的音频播放位置
函数方法
media.jump(time)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
time | number | 是 | 要跳转的播放进度时间,单位:毫秒 |
函数用例
media.playAudio("/mnt/sdcard/LuaBox/Projects/1/1.mp3",5,true)
--把音乐播放到 1 分钟的位置
media.jump(60*1000)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:media.pause 暂停音频播放
函数名称:暂停音频播放
函数功能: 暂停音频播放
函数方法
media.pause()
函数用例
media.playAudio("/mnt/sdcard/LuaBox/Projects/1/1.mp3",5,true)
--把音乐播放到 1 分钟的位置
media.jump(60*1000)
mSleep(2000)
-- 暂停音频播放
media.pause()
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:media.isPlaying 获取音频播放状态
函数名称:获取音频播放状态
函数功能: 获取音频是否在播放
函数方法
flag = media.isPlaying()
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 正在播放音频,false - 未播放 |
函数用例
media.playAudio("/mnt/sdcard/LuaBox/Projects/1/1.mp3",5,true)
flag = media.isPlaying()
if flag thendialog("正在播放中",5000)
elsedialog("已停止播放或者未播放",5000)
end
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:media.stop 停止播放音频
函数名称:停止播放音频
函数功能: 停止播放音频
函数方法
media.stop()
返回值 | 类型 | 说明 |
---|---|---|
flag | boolean | true - 正在播放音频,false - 未播放 |
函数用例
media.playAudio("/sdcard/TouchSprite/res/1.mp3")
mSleep(2000)
media.stop()
flag = media.isPlaying()
if flag thendialog("正在播放中",5000)
elsedialog("已停止播放或者未播放",5000)
end
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:media.getMusicDuration 获取播放音乐的总时长
函数名称:获取播放音乐的总时长
函数功能: 获取当前播放音乐的总时长
函数方法
duration = media.getMusicDuration()
返回值 | 类型 | 说明 |
---|---|---|
duration | number | 当前播放音乐的总时长,单位:毫秒,无音频在播放返回 0 |
函数用例
media.playAudio("/mnt/sdcard/LuaBox/Projects/1/1.mp3",5,true)
mSleep(2000)
flag = media.isPlaying()
if flag thenlevel = media.getMusicCurrentPosition()dialog(level,5000)
elsedialog("无音频在播放",5000)
end
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:media.getMusicCurrentPosition 获取当前音频播放进度
函数名称:获取当前音频播放进度
函数功能: 获取当前音频播放进度大小
函数方法
level= media.getMusicCurrentPosition()
返回值 | 类型 | 说明 |
---|---|---|
level | number | 获取当前音频播放进度,单位:毫秒,无音频在播放返回 0 |
函数用例
media.playAudio("/mnt/sdcard/LuaBox/Projects/1/1.mp3",5,true)
mSleep(2000)
flag = media.isPlaying()
if flag thenlevel = media.getMusicCurrentPosition()dialog(level,5000)
elsedialog("无音频在播放",5000)
end
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
函数:media.addToLib 添加音频文件到媒体库
函数名称:添加音频文件到媒体库
函数功能: 添加音频文件到媒体库
函数方法
media.addToLib(path)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path | number | 是 | 需要添加到媒体库的文件 |
函数用例
path = "/sdcard/TouchSprite/res/1.mp3"
media.addToLib(path)
注意事项
- 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。
这篇关于LuaBox积木编程开发手册-精编版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!