关于 lua的常用 语句 比较实用

用户可以通过在脚本中定义一个全局变量UI来实现定义脚本的配置界面,该界面会在脚本运行前显示给用户,用于让用户设置一些脚本的参数, 这些参数的值会赋值给指定的变量,脚本运行时可以通过访问这些变量来获取用户的配置。下面是一个完整的例子:

UI = {
        { 'TextView{-请如实填写哦-}'                   },
        { 'InputBox{}',             'name',    '姓名:' },
        { 'DropList{帅哥|美女}',    'sex',     '性别:' },
        { 'InputBox{18}',           'age',     '年龄:' },
        { 'DropList{是|否}',        'married', '婚否:' },
};
function main()
        notifyMessage(string.format("姓名:%s\n性别:%s\n年龄:%s\n婚否:%s", name, sex, age, married));
end

    上述脚本播放前会显示一个如下界面:
    

    全局变量UI是一个Table类型的变量,其中包含若干个子Table,每一个子Table都是一个界面上的控件,控件按照顺序自上而下排列,目前支持3中类型的控件:

    1. TextView (静态文本)
       1.1 控件说明
           该类型的控件只用来显示一行文字,不需要用户操作。
       1.2 控件定义
           { 'TextView{显示的内容}' }
           这个Table只有一个字符串成员,即'TextView{显示的内容}', 其中的TextView是指定此控件的类型为静态文本, {}中的内容即为该静态文本显示的内容。

    2. InputBox (输入框)
       2.1 控件说明
           该类型的控件可以用于让用户输入一些内容,并可以指定一个变量名,脚本开始后通过该变量就可以访问到用户输入的内容。
       2.2 控件定义
           { 'InputBox{默认值}', 'var', '注释' }
           这个Table中有3个字符串成员:
           * 'InputBox{默认值}', 其中的InputBox是指定此控件的类型为输入框,{}中的内容是该输入框中的默认值
           * 'var', 定义一个变量的名字,脚本开始后可以通过访问这个变量来获取用户输入的内容
           * '注释', 显示在输入框上方,用于说明该输入框的用途
       2.3 使用提示
           需要注意的是获取到的变量的值是默认是字符串类型,你可以使用tonumber()函数来转换成数字类型来使用。例如
var = tonumber(var);

    3. DropList (下拉列表)
       3.1 控件说明
           该类型的控件可以用于让用户在指定的若干个值中选择其中一个,并可以指定一个变量名,脚本开始后通过该变量就可以访问到用户选择的内容。
       3.2 控件定义
           { 'DropList{选项1|选项2|选项3|...}', 'var', '注释' }
           这个Table中有3个字符串成员:
           * 'DropList{选项1|选项2|选项3|...}', 其中的DropList是指定此控件的类型为下拉列表,{}中的内容是指定的若干个选项,每个选项间用|分隔
           * 'var', 定义一个变量的名字,脚本开始后可以通过访问这个变量来获取用户选择的内容
           * '注释', 显示在下拉列表上方,用于说明该下拉列表的用途

*** 说明 ***
全局代码块(不包含在任何函数内的代码块)会在脚本的main()函数之前被调用,所以可以在全局代码块中对UI变量进行动态的设置,UI变量是一个Table类型的变量,可以使用Lua的Table库函数操作, 下面是一个操作UI变量的例子:

file = io.open("/var/touchelf/conf.txt"); -- 打开配置文件
data = file:read("*a");                   -- 读取全部内容
file:close();                             -- 关闭文件

UI = {
        { 'InputBox{'.. data .. '}', 'demo', '演示:' },
}

function main()
        notifyMessage(string.format("%s", demo));
end

2.3 扩展函数
logDebug()

输出调试信息到系统日志,可以在“触摸精灵->设置->查看日志”中查看

  • 参数
    • 参数1 (字符串) : 调试信息
  • 返回值
  • 示例
    • logDebug("hello"); -- 输出"hello"到系统日志
                

mSleep()

进行毫秒级别延迟

  • 参数
    • 参数1 (数字) : 毫秒数
  • 返回值
  • 示例
    • mSleep(1000); -- 延迟1秒
                

notifyMessage()

以文字提示框的方式通知用户

  • 参数
    • 参数1 (字符串) : 提示文字
  • 返回值
  • 示例
    • notifyMessage("hello"); -- 在屏幕上显示"hello"
                

notifyVibrate()

以震动方式通知用户

  • 参数
    • 参数1 (数字) : 毫秒数
  • 返回值
  • 示例
    • notifyVibrate(1000); -- 让设备震动1秒
                

notifyVoice()

以播放音频的方式通知用户

  • 参数
    • 参数1 (字符串) : 音频路径
  • 返回值
  • 示例
    • notifyVoice("/var/touchelf/a.mp3"); -- 播放路径为"/var/touchelf/a.mp3"的音频
                

touchDown()

发送手指按下事件

  • 参数
    • 参数1 (数字) : 手指ID, 范围0~128, 用于标识一个手指,在后续的touchMove()和touchUp()中需要使用
    • 参数2 (数字) : X坐标
    • 参数3 (数字) : Y坐标
  • 返回值
  • 示例
    • touchDown(0, 100, 100); -- ID为0的手指在坐标为(100, 100)的点按下
      touchUp(0);             -- ID为0的手指抬起
                

touchMove()

发送手指移动事件

  • 参数
    • 参数1 (数字) : touchDown()时传入的手指ID
    • 参数2 (数字) : X坐标
    • 参数3 (数字) : Y坐标
  • 返回值
  • 示例
    • touchDown(0, 100, 100); -- ID为0的手指在坐标为(100, 100)的点按下
      touchMove(0, 200, 100); -- ID为0的手指滑动到坐标为(200, 100)的点
      touchUp(0);             -- ID为0的手指抬起
                

touchUp()

发送手指抬起事件

  • 参数
    • 参数1 (数字) : touchDown()时传入的手指ID
  • 返回值
  • 示例
    • touchDown(0, 100, 100); -- ID为0的手指在坐标为(100, 100)的点按下
      touchUp(0);             -- ID为0的手指抬起
                
`for` 语句Lua 中是一个用于循环执行一段代码的关键字。它的基本形式允许开发者在需要反复执行一组指令直到满足特定条件时提供简洁而强大的语法结构。 ### `for` 语句的基本语法: ```lua for 变量 in 序列 do 表达式块 end ``` 在这个基本语法中: - **变量** 是一个新的局部变量,在每次迭代过程中会被赋予序列中的下一个值。 - **序列** 是一个可迭代的对象或数值范围,例如数字、字符串或由逗号分隔的列表。 - **表达式块** 是在每轮循环中执行的一组语句。 ### 示例一:遍历数组 ```lua local fruits = {"apple", "banana", "cherry"} for i, fruit in ipairs(fruits) do print("Fruit: ", fruit) end ``` 这个示例遍历了数组 `fruits` 的元素,并打印出每个水果。 ### 示例二:通过数字范围循环 ```lua for num = 1, 5 do print(num) end ``` 这行代码会从数字 `1` 循环到 `5`,并打印每一个数。 ### 示例三:使用自定义序列(通过函数生成) ```lua function generate_sequence(n) return {1, 2, n} end local value = 5 for _, v in ipairs(generate_sequence(value)) do print(v) end ``` 这里通过一个函数 `generate_sequence` 来动态生成一个序列,然后在 `for` 循环中使用。 ### 相关问题 - `for` 语句的应用场景: 1. **遍历集合或数组**:当需要对一系列数据项进行操作时,`for` 循环非常有用,可以简化代码编写过程。 2. **计数或进度条显示**:在执行大量计算或处理任务时,通过控制循环次数来显示进度,增强程序的用户交互体验。 3. **文件系统遍历**:在读取目录下所有文件名或递归查找特定类型的文件时,`for` 语句能够帮助构建相应的迭代逻辑。 --- 以上内容展示了 `for` 语句Lua 编程语言中的基本应用及其应用场景,希望对学习 Lua 或需要在项目中使用循环逻辑的开发者有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值