神奇的官方例子是如何做到的呢?让我们来一探究竟,打开脚本源文件视图:
可以看到,源码并不复杂,简约的40多行,就能达到效果,你写的时候也会是这样的!简约而不简单。现在进入源码的世界吧。
1.基础中的基础—-关键字与变量
关键字是按键里已经定义好的一些含有独特功能的标识符(暂时可以理解为命令),这些命令可以直接使用,不需要你再去定义它。举个栗子(例子?),我们想要显示一句话,于是这么写:
调试运行后得到:
显示一句话的说法如此之多,计算机不可能全部认到,因此我们需要一些约定好的说法(命令)。
变量是用来存放用户自定义的数据,在脚本执行过程中可以自己去变化他,变量使用Dim关键字进行标识,如下图,名字就是变量,脚本过程中可以赋值为小明,也可以赋值成小红,用”=”符号进行赋值。
变量与标识符一样要以字母或者汉字开头。
明白了关键字与变量后,我们再来看看官方例子的源码,其中蓝色部分都是按键精灵定义好的命令(他是蓝色的,再也不担心自己写的标识符和按键定义好的重复了!)
(PS:同时定义多个用逗号分隔)
图中不就是变量的定义与赋值吗!至于赋值的内容,翻开之前的命令大全查看吧(自力更生吧少年,自己找到他印象更为深刻哦)。
2.运算符
1)算术运算符:算术运算符是用来进行基本的数据计算的,和数学中的算术运算基本一致,包括优先级等等。(小学数学有木有,学起来!)
常见的有+、–、*、/,也就是加减乘除(记住吧),还有一些比较少用到的,比如求余的运算符mod等等(知道有即可,需要用再去找)。
2)关系运算符:关系运算符是用来比较两个数,确定两个数关系的。关系表达式返回的是一个布尔型(True或False,也就是真或假),比如1>2,这个是不成立的,因此他返回的结果是False。
常见的有=、>、<、>=、<=、<>,都很好理解,功能分别是等于、大于、小于、大于或等于、小于或等于、不等于。关系运算符常常和判断语句一起使用。
3)逻辑运算符:关系表达式只能判断一次,而实际上我们经常需要多个条件判断,比如“我要寻找一个上衣穿黑色,并且手里提着笔记本的人”。这时候就需要用逻辑表达式来同时进行2次判定。
常见的有And、Or、Not等等,两个条件要同时成立就用And连接两个判断语句,两个条件只需要一个成立就用Or连接两个判断语句。
3.Delay
官方例子的脚本中,我们看到最多的就是Delay,他的意思是延时,我们做的任何操作,都是在时间轴上的,第一秒做了什么,第二秒又做了什么,在代码中,就是用延时来给手机反应的时间,Delay后面的参数为时间,单位为毫秒,即Delay 1000,是为延时1000毫秒(也就是1秒)的意思。
- Delay 1000 //延时1000毫秒,也就是1秒再往下执行
复制代码
4.Tap和Touch之间的故事(哦,忘了还有你—KeyPress)
游戏或者应用中,最基础的操作方式就是点击,我们来研究一下一个点击操作究竟有哪些步骤:
1) 触摸屏幕中的一个位置
2)经过一小段时间的延时
3)放手
用代码表示即为:
- TouchDown x,y,1 //x,y为坐标,也就是点击屏幕的位置
- Delay 50
- TouchUp 1
复制代码
一个点击操作就需要如此麻烦,那有木有更简单的办法呢?答案是有的,我们可以用Tap x,y 来代替上面的三行代码,除了不适合用在多点操作以外,其他功能是一样的(其实就是用Touch封装的)。
x与y为坐标,那么问题来了,挖。。。咳咳,手机游戏有的是横屏,有的是竖屏,我们要怎么确定这个坐标呢?为了防止混乱,我们强制使用竖屏时候的左上角作为坐标系的起点,让我们来看看图就明白:
手机的屏幕显示的内容都是由一个个像素点组成的,如果不明白,可以百度自己的手机型号,查找到分辨率这一项属性(安卓不像windows分辨率可调整)。
噢,别忘了还有KeyPress,作为PC端最常见的输入手段,在安卓中也是有的,常用的安卓三键(主菜单,主页,返回)就是使用KeyPress来点击。分别为:
- KeyPress “Menu”
- KeyPress “Home”
- KeyPress “Back”
复制代码
当然你并不需要特地去背下来,还记得我们手机助手的快捷命令区吗?
5.又一个故事—-这次是ShowMessage和TracePrint
官方例子中,我们除了看到各种操作外,还看到了每一个操作附带的提示信息,这种短暂的提示,对于使用者来说相当友好,也方便自己开发时用来显示调试内容(温馨提示:两个ShowMessage之间最好要有1秒以上的时间间隔哦,否则第二个ShowMessage会遮住第一个的)。当然,如果用来做调试,ShowMessage并不是一个好选择,我们来看看他的兄弟—-TracePrint。作为开发脚本的作者,游戏中的逻辑相当之多,一旦代码量上来了,运行的时候就需要在各种分支或者操作加上TracePrint的调试信息,方便我们知道脚本”跑”到哪了。
- KeyPress “Menu”
- TracePrint “点击了菜单键”
- KeyPress “Home”
- TracePrint “点击了主界面键”
- KeyPress “Back”
- TracePrint “点击了返回键”
复制代码
上述代码,如果我们发现调试信息只到”我点击了HOME键“,那么很快就可以定位到错误的地方。(当然,以下脚本并没有问题)
我们讲了输出自己写好的调试信息,但是在很多情况下并不友好,比如我在一个循环内想输出循环的次数,固定的输出信息并不能满足我(难道要一条一条去数吗),那么,我们可以在输入信息中加入自定义的变量,然后就可以在输出里面看到调试的信息,是不是很方便呢!(循环之后会讲哦)
- Dim 循环次数 = 0
- Do
- Delay 1000
- 循环次数 = 循环次数+1
- TracePrint “循环次数:”&循环次数&“次”
- Loop
复制代码
6.动一动—-Swipe(没错,”他”和Touch也有关系)
又一个游戏或者应用中常出现的操作—-划屏,简单粗暴的使用Swipe进行吧。
- Swipe 10,10,100,100,300 //从坐标10,10划动到坐标100,100,历时300毫秒
复制代码
然而很多情况下,我们希望能够长按一段时间再进行移动(比如拖动软件位置时),又或者希望能滑动后停顿一段时间再抬起,防止列表由于惯性又滑动了一段距离(很多游戏都这样!),Swipe并不适合这种情况,那么问题来了,挖掘机。。。(你够了!)我们需要使用Touch命令来解决这个问题,直接贴代码:
- TouchDown 10, 10, 1
- Delay 1000
- TouchMove 100, 100, 1, 300
- Delay 1000
- TouchUp 1
复制代码
我们在点击后延时1秒进行移动,经过300毫秒移动完毕后等待了1秒才抬起。一个简单的滑动居然需要5行,要是需要使用的地方一多,岂不是很麻烦,我想要一行就搞定行吗?当然没问题,继续贴代码:
- SwipeByDzc 10, 10, 100, 100, 1000, 1000, 300
复制代码
这么写的话。。。。运行的时候会报错(你丫的),当然还没结束,我们需要在脚本的其他地方加上:
- Function SwipeByDzc(StartX, startY, EndX, EndY, LastTime1, LastTime2, MoveTime)
- TouchDown StartX, StartY, 1
- Delay LastTime1
- TouchMove EndX, EndY, 1, MoveTime
- Delay LastTime2
- TouchUp 1
- End Function
复制代码
于是就可以使用了,这个属于函数的用法,这里先不用关心。
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。