文章目录

  • 转载声明
  • 一、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 相关函数

函数: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积木编程开发手册-精编版相关推荐

  1. 《阿里巴巴Java开发手册(正式版)》--编程规约

    (一)命名规约 1.[强制] 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name / __name / Object/name/nameObject / na ...

  2. 计算机网络管理课程内容与考核要求,计算机网络管理课程教学探索_精编版

    <计算机网络管理课程教学探索_精编版>由会员分享,可在线阅读,更多相关<计算机网络管理课程教学探索_精编版(6页珍藏版)>请在人人文库网上搜索. 1.精编范文 计算机网络管理课 ...

  3. 最新版阿里巴巴Java开发手册(嵩山版)-附免费下载链接

    2020年8月3日,阿里技术官方宣布,阿里巴巴<Java 开发手册(嵩山版)>现已正式发布. <阿里巴巴 Java 开发手册>始于阿里内部规约,在全球Java开发者共同努力下, ...

  4. 阿里新版java开发手册(2019华山版、2020泰山版)

    pdf文件链接: https://pan.baidu.com/s/15Q_qCyqLTG0wBFyHVM3zog 提取码: in6y 目录 一. 编程规约 (一) 命名风格 (二) 常量定义 (三) ...

  5. 阿里巴巴Java开发手册(详尽版)-个人未注意到的知识点

    阿里巴巴Java开发手册(详尽版)-个人未注意到的知识点 阿里巴巴Java开发手册(详尽版)1 一.编程规约 (一) 命名风格 [强制]代码中的命名只可用英文方式 [强制]类名使用UpperCamel ...

  6. 最新《阿里巴巴Java开发手册》华山版、泰山版、嵩山版速来领取!

    微信公众号原文链接:戳此阅读 简介: 阿里巴巴Java开发手册,来自阿里集团的智慧与经验,用血淋淋的故障换来的总结阿里经济体全球技术开发准则. 文章线路图 手册简介 历代版本 获取方式 手册简介 &l ...

  7. 苏杰对话布棉:产品经理 · 看十年 · 超万字的...精编版

    10月23号,和三节课的布棉老师聊了不到2小时的天,是关于产品经理过去十年.未来十年的话题,顺便就直了个播,把内容的精编版分享一下,居然也有1万多字,建议先收藏有空再看-- 题图是直播刚开始的时候,设 ...

  8. 阿里巴巴Java开发手册(黄山版)

    阿里巴巴 Java 开发手册(黄山版) 链接:https://pan.baidu.com/s/1iKsXlq1DSbePLvuysYbA4A 提取码:yyds 阿里巴巴将 Java 开发手册 从 1. ...

  9. html5+css+javascript深入学习实录pdf,HTML5+CSS3+JavaScript从入门到精通 微课精编版.pdf...

    作 者 :前端科技 出版发行 : 北京:清华大学出版社 , 2018.08 ISBN号 :978-7-302-50220-3 页 数 : 529 原书定价 : 79.80 主题词 : 超文本标记语言- ...

最新文章

  1. 蚂蚁金服大佬自述:保持学习力,永远胜过不切实际的一夜暴富幻想!
  2. Python爬虫day1.2—Python语法基础
  3. Java集合—哈希(hash)表
  4. 设置停靠模式,切割设置星级图标
  5. 用JSLint+Ant检验HTML代码
  6. 【劲峰论道时空分析技术-学习笔记】2 时空可视化
  7. php 实现顺序查找
  8. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day1-Java入门
  9. tensorflow2 serving
  10. a non-compliant version of Huawei Mobile Services SDK which contains code to download or install app
  11. 手机怎么提高图片分辨率?手机怎么改照片分辨率dpi?
  12. 数据可视化--物流大数据服务平台
  13. 用Excel自动产生日期
  14. Hive SQL复杂场景实现(1) —— 连续发单天数
  15. 马来西亚理科大学计算机专业雅思,【马来西亚理科大学本科雅思成绩要求】 - 马来西亚留学联盟...
  16. E销宝:dsp广告应该怎么投放?
  17. SQL语句集锦,SQL语句大全
  18. 人类视觉的几种感知错觉现象
  19. scratch扫雷游戏
  20. 孪生质数——孤独的质数

热门文章

  1. 数据项组成数据元素,数据元素组成数据
  2. Nginx关闭或重启后nginx.pid丢失
  3. 2022年国内私网IP地址
  4. 【计算机网络】物理层 : 相关参数 ( 码元 | 码元进制 | 速率 | 码元传输速率 | 波特 | 信息传输速率 | 带宽 | 码元速率计算示例 )★
  5. 微信开发相关图书推荐
  6. ThreadLocal学习笔记
  7. jar包是干什么用的
  8. 如何可以同时登录多个账户:无痕模式的使用
  9. 【悟空云课堂】第二十六期:通过错误消息导致的信息暴露(CWE-209:Generation of Error Message Containing Sensitive Information)
  10. C# .Net通过pythonnet调用python pyd文件