神奇的官方例子是如何做到的呢?让我们来一探究竟,打开脚本源文件视图:

脚本源文件视图

可以看到,源码并不复杂,简约的40多行,就能达到效果,你写的时候也会是这样的!简约而不简单。现在进入源码的世界吧。

1.基础中的基础—-关键字与变量

关键字是按键里已经定义好的一些含有独特功能的标识符(暂时可以理解为命令),这些命令可以直接使用,不需要你再去定义它。举个栗子(例子?),我们想要显示一句话,于是这么写:

显示一句话

调试运行后得到:

调试运行后

显示一句话的说法如此之多,计算机不可能全部认到,因此我们需要一些约定好的说法(命令)。

变量是用来存放用户自定义的数据,在脚本执行过程中可以自己去变化他,变量使用Dim关键字进行标识,如下图,名字就是变量,脚本过程中可以赋值为小明,也可以赋值成小红,用”=”符号进行赋值。

用”=”符号进行赋值

变量与标识符一样要以字母或者汉字开头。

变量与标识符一样

明白了关键字与变量后,我们再来看看官方例子的源码,其中蓝色部分都是按键精灵定义好的命令(他是蓝色的,再也不担心自己写的标识符和按键定义好的重复了!)

官方例子的源码

PS:同时定义多个用逗号分隔)

图中不就是变量的定义与赋值吗!至于赋值的内容,翻开之前的命令大全查看吧(自力更生吧少年,自己找到他印象更为深刻哦)。

2.运算符

1算术运算符:算术运算符是用来进行基本的数据计算的,和数学中的算术运算基本一致,包括优先级等等。(小学数学有木有,学起来!)

常见的有+*/,也就是加减乘除(记住吧),还有一些比较少用到的,比如求余的运算符mod等等(知道有即可,需要用再去找)。

2关系运算符:关系运算符是用来比较两个数,确定两个数关系的。关系表达式返回的是一个布尔型(TrueFalse,也就是真或假),比如1>2,这个是不成立的,因此他返回的结果是False

常见的有=><>=<=<>,都很好理解,功能分别是等于、大于、小于、大于或等于、小于或等于、不等于。关系运算符常常和判断语句一起使用。

3逻辑运算符:关系表达式只能判断一次,而实际上我们经常需要多个条件判断,比如“我要寻找一个上衣穿黑色,并且手里提着笔记本的人。这时候就需要用逻辑表达式来同时进行2次判定。

常见的有AndOrNot等等,两个条件要同时成立就用And连接两个判断语句,两个条件只需要一个成立就用Or连接两个判断语句。

逻辑运算符

3.Delay

官方例子的脚本中,我们看到最多的就是Delay,他的意思是延时,我们做的任何操作,都是在时间轴上的,第一秒做了什么,第二秒又做了什么,在代码中,就是用延时来给手机反应的时间,Delay后面的参数为时间,单位为毫秒,即Delay 1000,是为延时1000毫秒(也就是1秒)的意思。

  1. Delay 1000 //延时1000毫秒,也就是1秒再往下执行

复制代码

4.Tap和Touch之间的故事(哦,忘了还有你—KeyPress)

游戏或者应用中,最基础的操作方式就是点击,我们来研究一下一个点击操作究竟有哪些步骤:

1) 触摸屏幕中的一个位置

2)经过一小段时间的延时

3)放手

用代码表示即为:

  1. TouchDown x,y,1 //x,y为坐标,也就是点击屏幕的位置
  2. Delay 50
  3. TouchUp 1

复制代码

一个点击操作就需要如此麻烦,那有木有更简单的办法呢?答案是有的,我们可以用Tap x,y 来代替上面的三行代码,除了不适合用在多点操作以外,其他功能是一样的(其实就是用Touch封装的)。

xy为坐标,那么问题来了,挖。。。咳咳,手机游戏有的是横屏,有的是竖屏,我们要怎么确定这个坐标呢?为了防止混乱,我们强制使用竖屏时候的左上角作为坐标系的起点,让我们来看看图就明白:

坐标系的起点

手机的屏幕显示的内容都是由一个个像素点组成的,如果不明白,可以百度自己的手机型号,查找到分辨率这一项属性(安卓不像windows分辨率可调整)。

噢,别忘了还有KeyPress,作为PC端最常见的输入手段,在安卓中也是有的,常用的安卓三键(主菜单,主页,返回)就是使用KeyPress来点击。分别为:

  1. KeyPress “Menu”
  2. KeyPress “Home”
  3. KeyPress “Back”

复制代码

当然你并不需要特地去背下来,还记得我们手机助手的快捷命令区吗?

手机助手的快捷命令区

5.又一个故事—-这次是ShowMessage和TracePrint

官方例子中,我们除了看到各种操作外,还看到了每一个操作附带的提示信息,这种短暂的提示,对于使用者来说相当友好,也方便自己开发时用来显示调试内容(温馨提示:两个ShowMessage之间最好要有1秒以上的时间间隔哦,否则第二个ShowMessage会遮住第一个的)。当然,如果用来做调试,ShowMessage并不是一个好选择,我们来看看他的兄弟—-TracePrint作为开发脚本的作者,游戏中的逻辑相当之多,一旦代码量上来了,运行的时候就需要在各种分支或者操作加上TracePrint的调试信息,方便我们知道脚本到哪了。

  1. KeyPress “Menu”
  2. TracePrint “点击了菜单键”
  3. KeyPress “Home”
  4. TracePrint “点击了主界面键”
  5. KeyPress “Back”
  6. TracePrint “点击了返回键”

复制代码

上述代码,如果我们发现调试信息只到”我点击了HOME键“,那么很快就可以定位到错误的地方。(当然,以下脚本并没有问题)

我们讲了输出自己写好的调试信息,但是在很多情况下并不友好,比如我在一个循环内想输出循环的次数,固定的输出信息并不能满足我(难道要一条一条去数吗),那么,我们可以在输入信息中加入自定义的变量,然后就可以在输出里面看到调试的信息,是不是很方便呢!(循环之后会讲哦)

  1. Dim 循环次数 = 0
  2. Do
  3. Delay 1000
  4. 循环次数 = 循环次数+1
  5. TracePrint “循环次数:”&循环次数&“次”
  6. Loop

复制代码

6.动一动—-Swipe(没错,”他”和Touch也有关系)
又一个游戏或者应用中常出现的操作—-划屏,简单粗暴的使用Swipe进行吧。

  1. Swipe 10,10,100,100,300 //从坐标10,10划动到坐标100,100,历时300毫秒

复制代码

然而很多情况下,我们希望能够长按一段时间再进行移动(比如拖动软件位置时),又或者希望能滑动后停顿一段时间再抬起,防止列表由于惯性又滑动了一段距离(很多游戏都这样!),Swipe并不适合这种情况,那么问题来了,挖掘机。。。(你够了!)我们需要使用Touch命令来解决这个问题,直接贴代码:

  1. TouchDown 10, 10, 1
  2. Delay 1000
  3. TouchMove 100, 100, 1, 300
  4. Delay 1000
  5. TouchUp 1

复制代码

我们在点击后延时1秒进行移动,经过300毫秒移动完毕后等待了1秒才抬起。一个简单的滑动居然需要5行,要是需要使用的地方一多,岂不是很麻烦,我想要一行就搞定行吗?当然没问题,继续贴代码:

  1. SwipeByDzc 10, 10, 100, 100, 1000, 1000, 300

复制代码

这么写的话。。。。运行的时候会报错(你丫的),当然还没结束,我们需要在脚本的其他地方加上:

  1. Function SwipeByDzc(StartX, startY, EndX, EndY, LastTime1, LastTime2, MoveTime)
  2. TouchDown StartX, StartY, 1
  3. Delay LastTime1
  4. TouchMove EndX, EndY, 1, MoveTime
  5. Delay LastTime2
  6. TouchUp 1
  7. End Function

复制代码

于是就可以使用了,这个属于函数的用法,这里先不用关心。

声明:
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。