查看: 1260|回复: 1

[工具教程] 零基础小白学触动 Part 01 Lua 语法基础

24

主题

30

帖子

158

积分

注册会员

Rank: 2

积分
158

最佳新人活跃会员优秀助手作者

触动精灵 发表于 2017-7-13 16:06:22 | 显示全部楼层 |阅读模式
视频合集

优酷播单:http://list.youku.com/albumlist/show/id_28562946
本教程分为六个部分:
1. 开发必备常识
2. Lua 语法基础
3. 触动精灵开发工具的安装和使用
4. 触动精灵常用函数
5. 简单的脚本开发
6. 实战开发:脚本优化和函数封装

Lua 语法基础
简单介绍
语法部分将结合代码示例来讲解,下面是代码实战部分深海水族馆的脚本源码。

  • require "TSLib"
  • gamebid = "com.idleif.abyssrium"
  • function unlock()--防锁屏
  •     flag = deviceIsLock()
  •     if flag ~= 0 then
  •         sysver = getOSVer()
  •         sysint = tonumber(string.sub(sysver, 1, 1)..string.sub(sysver, 2, 2))--转化为数字版本号
  •         if sysint == 10 then
  •             pressHomeKey(0)
  •         end
  •         unlockDevice()
  •     end
  • end

require
很多新手经常问,我的脚本有两个文件,怎么用 1 个调用另外一个呢?就是用 require 了。
这里需要注意的是,如果你要调用的脚本名字是 abc.lua, 那么一定要记得,只写脚本名字,不要加扩展名!!!
而文件名是字符串类型(关于这个下面再讲),需要加引号,双引号单引号都可以。
另外就是 Lua 是大小写敏感的语言,如果你写 require "ABC" 是肯定会报错的。

字符串
在 Lua 里最常见到的类型,特点就是必须用引号引起来,我们可以这么理解,字符串就是一串字符,是固定不变的。
“ABC” 就是 “ABC”,永远不会变。并且字符串是不能用来做加减乘除运算的,也不能用来和数值进行比较,你可以说 2 比 1 大,但 “2只小鸡”和“1匹马”是无从比较的。
其他常用的类型还有数值,非常好理解,就是可以用来做运算的数字。
1 + 1 = 2
需要说明的是,被引号引起来的数字就是字符串了哦~

变量
顾名思义,能够变化的量。
你可以写 a = 1
a = a +1
b = a + b
a 和 b 是根据对它的赋值在变化的。
在 Lua 里,一个等号 = 就是用来赋值的,下面我们会说到两个等号,一定要区别开来。
在上面的代码里,gamebid = "com.idleif.abyssrium",gamebid 是我自定义的变量,可以随便改(只要不用到 Lua 已占用的关键字就可以),我也可以写 abc = "com.idleif.abyssrium",当然接下来用到的 gamebid 地方都要改成 abc 才行。
"com.idleif.abyssrium" 就是字符串了,是一款叫做《深海水族馆》的游戏的 Bundle ID。
变量可以赋值的类型:字符串、数值、函数等。
27 行中 flag 这个变量就被赋值了一个函数,那么这个变量就会等于函数的返回值。
而当一个函数有多个返回值时,就可以给多个变量进行赋值了。

封装函数
function abc() ... end 就是封装义了一个名为 abc 的函数,在接下来的脚本中可以任意调用这个函数所包含的代码。
定义函数的好处就是让脚本更加精简,避免撰写重复代码,使逻辑结构清晰,便于后期维护。
想象一下,如果整个脚本中多处用到点击,而点击是由按下、间隔时间、抬起,至少三行代码组成的,封装成函数之后,就变成了 1 行代码。是不是清晰多了?
这里需要注意的是,封装函数一定要记得末尾加 end,函数名可以用中文但不能重复,不能占用 Lua 本身的关键字。

注释
两条短横线就代表后面的内容不对代码产生任何影响,只是单纯的作为备注使用,一般是用来辅助记录代码用户和变更的。
一旦代码前面加了注释标记,那么这行代码就被注释掉了。
多行代码注释 --[[ 要注释掉的内容 --]],注意中括号的位置。

if 判断语句
Lua 中最最常用的逻辑就是“假如(某条件)成立那么就(执行命令)结束”,用代码表示就是
if...then...end,翻译成中文很好理解吧。
更复杂一点的就是层层嵌套判断语句,比如,根据年龄判断一个人是不是小学生,假定小学生年龄为8周岁到14周岁,用代码写是这样的

  • if 8 < 年龄<14 then
  • 是小学生
  • else
  • 不是小学生
  • end
注意,每一个 if 都要有一个 end 来对应表示判断结束。
在这里 else 就是不符合判断条件之外的所有情况,不再做任何判断,直接执行命令。
当然上面的语法比较简单,如果我们想判断不是小学生的人是不是中学生呢。这里就要用到 elseif 了。

  • if 8 <= 年龄<=14 then
  • 是小学生
  • elseif 15 <= 年龄<=18 then
  • 是中学生
  • else
  • 既不是小学生也不是中学生
  • end

比较运算
上面的<= 、>= 以及截图中的 ~=和== 都是比较运算,分别是小于等于、大于等于、不等于和等于。
两个数值可以互相进行大小比较,返回值是数值的函数或者变量也可以和数字进行大小比较,而变量和字符串只能有等于和不等于,字符串是不能进行大小比较的。




上一篇:模拟器总是提示网络有问题
下一篇:请问 如何将照相机的抓图模式改成捕捉桌面
电脑玩手游,就用夜神安卓模拟器,www.yeshen.com免费下载使用夜神安卓模拟器。

0

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
用户7426367 发表于 2018-5-6 21:55:53 | 显示全部楼层
视频声音好小
电脑玩手游,就用夜神安卓模拟器,www.yeshen.com免费下载使用夜神安卓模拟器。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则