• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.2.9
软件大小:62.5M
更新时间:12-07

按键精灵iOS版
立即下载

软件版本:1.3.1
软件大小:29.2M
更新时间:09-29

按键精灵Mac版
立即下载

软件版本:1.1.0
软件大小:12.3M
更新时间:12-29

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
发新话题 回复该主题

[按键精灵手机版2.5基础教程] 6.中学----函数 [复制链接]

1#

按键精灵手机版2.5基础教程


6.中学----函数



前面的几节课,我们有做了2个脚本(视频中~很重要哦),也讲了UI界面的制作以及使用,但是我们并没有把这两个属于同一个游戏的脚本结合起来,然后通过UI来控制功能,是不是我忘了来着?当然不是(就算是我也不会承认的~),那是因为在这之前,我们需要了解一个东东----函数!作为按键精灵脚本中最核心的内容(上次图色那你也说核心。。额。不要在意这种细节),函数对于脚本来说相当于管理器,当我们写下了数量庞大的代码之后,发现有个功能需要修改,然而用到这个功能的地方很多,那么工作量十分巨大。而通过函数,可以大大减少工作量。一个最简单的函数的写法是:
  1. Function 自定义函数()
  2. TracePrint “我是自定义函数,被你调用了”
  3. End Function
复制代码

函数内的内容并不会马上被执行,可以在需要用到的时候执行,增加灵活度,调用函数的方法有几个,以下的三个语句都能够调用,推荐第二个或者第三个。

  1. 自定义函数
  2. 自定义函数()
  3. Call 自定义函数()
复制代码

再来看另外一个函数:

  1. Function 自定义函数(参数1,参数2)
  2. TracePrint "传入的第一个参数是:"&参数1
  3. TrcaePrint "传入的第二个参数是:"&参数2
  4. 参数1 = 参数1+1
  5. End Function
  6. 自定义函数(3,4)
复制代码

我们可以将外部的参数传入到函数内处理,但是记住了,在函数里面处理的参数都是复制我们传入的参数,在这个复制体上做处理并不能影响到我们传入的参数。我们将上面的函数例子改动一下看看:

  1. Function 自定义函数(参数1,参数2)
  2. TracePrint "传入的第一个参数是:"&参数1
  3. TrcaePrint "传入的第二个参数是:"&参数2
  4. 参数1 = 参数1+1
  5. End Function
  6. Dim 参数 = 3
  7. 自定义函数(参数,4)
  8. TracePrint 参数
复制代码

我们将参数3传递了进去,而在函数内,对传递进去的3进行了加1处理,那么第八行会输出原始的3还是输出加1之后的4呢?尝试一下,得出了结果是3(下图),这证明了我们传递进去的参数并不会在函数内被修改。




最后来看看另一个函数:

  1. Function 比大小(参数1, 参数2)
  2. If 参数1 > 参数2 Then
  3. 比大小 = 参数1
  4. ElseIf 参数1 < 参数2 Then
  5. 比大小 = 参数2
  6. Else
  7. TracePrint "两个数一样大"
  8. End If
  9. End Function

  10. Dim numA,numB
  11. numA = 3
  12. numB = 3
  13. If 比大小(numA, numB) <> null Then
  14. TracePrint "较大的值是:"&比大小(numA,numB)
  15. End If
复制代码

稍微长了点,但是我们已经是中学生,完全可以接受,我们先看看函数体部分,函数传入了两个参数,并且进行比较,比较后的结果这么写:函数名=变量,意思是这个函数返回了一个变量,例子中参数1大于参数2时,函数返回参数1参数1大与参数2时候,函数返回参数2,其他情况时(相等),输出信息两个数一样大

再来看看怎么调用他,有人直接用“TracePrint 比大小(numA,numB)”来输出,当两个数不一样大小时,确实能正常输出,因为他们都会返回一个值,但是当两个数一样的时候,函数并没有返回值,或者说返回值是空(null)的,所以,我们使用前可以先做一个判定(我们学过的判断语句),返回值不为空才输出较大的值。

通过函数,我们将可以将多个单独功能的脚本封装起来做在一起,并提供了友好的操作界面供用户选择,而这就是函数的强大之处。有的童鞋可能已经学过一些,使用子程序(Sub,功能和Function基本一样)来做。但是在这里,我并不推荐使用子程序,他们之间的最大区别是返回值,函数可以有返回值,而子程序没有,其他我们可以理解为完全一样。既然是大于等于的关系,那么我们应该忘掉Sub,尽情使用Function。

以下为视频中的例子源码:

UI界面:

  1. 界面1:
  2. {
  3. 文字框:
  4. {
  5. 注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
  6. 名称:"文字框1",
  7. 显示内容:"选择功能",
  8. 文字大小:0,
  9. 高度:0,
  10. 宽度:0
  11. },
  12. 下拉框:
  13. {
  14. 注释:"初始选项是可选属性,默认值为0。模版中设置了三个选项,您可以根据需要增加或减少,注意各选项之间用逗号分隔。",
  15. 名称:"功能序号",
  16. 选项:
  17. [
  18. "踩蟑螂",
  19. "拍红绿",
  20. ],
  21. 初始选项:0
  22. },
  23. }
复制代码

脚本源码:

  1. Function 踩蟑螂()
  2. Do
  3. Tap 594, 1173
  4. Delay 10
  5. Tap 115, 1179
  6. Delay 10
  7. Tap 360, 1192
  8. Delay 10
  9. Loop
  10. End Function

  11. Function 拍红绿()
  12. Dim intX,intY
  13. Do
  14. FindMultiColor 45, 728, 640, 834, "3EA519", "32|-2|46B61D,33|23|45B41D", 0, 0.9, intX, intY
  15. If intX > -1 And intY > -1 Then
  16. Tap 545,1175
  17. End If
  18. Delay 20
  19. FindMultiColor 45, 728, 640, 834, "FFFFFF", "32|-8|0339E4,30|16|0233DB", 0, 0.9, intX, intY
  20. If intX > -1 And intY > -1 Then
  21. Tap 195,1192
  22. End If
  23. Loop
  24. End Function

  25. Dim 功能序号 = ReadUIConfig("功能序号")
  26. TracePrint "你选择的功能号为: "&功能序号

  27. If 功能序号 = 0 Then
  28. 踩蟑螂()
  29. ElseIf 功能序号 = 1 Then
  30. 拍红绿()
  31. End If
复制代码


最后编辑兄弟工程师13 最后编辑于 2015-10-08 14:04:57
2#

好烦~~~~学不动了

3#

{:5_129:楼上那位和我一样差不多时间在学习,哈哈

4#

看的好心累啊

5#

沒有 return 嗎 ?

6#

这节课好复杂啊,函数到底做什么用啊

7#

不错,视频还没看

8#

终于我也明白你们为什么晕了......额,我开始学会从别人的角度考虑问题了......因为我现在没有任何基础接受了一个前端项目,现在感觉好迷茫啊,擦,我要怎么开始,怎么应对

9#

回复 9楼perfectnihil的帖子

之前还嘲笑别人......这么简单的东西都看不懂,现在不这么想了,有基础和没基础,差距真的好大好大。。。

点评

perfectnihil  经验!!!!!!  发表于 2016/9/5 11:40:33

10#

看到很多friend都开始头疼,我也有一点,不过还听得懂。等会再看几遍。今天同时看了三节课,有点头大。。很晚了,明天起来再看一遍,然后开始练习。熟悉了继续下一课

11#

l加油!!!

12#

我依然在呢

13#

顶一个,学习了

14#

回复 3楼18200353809的帖子

坚持就是胜利

15#

一鼓作气,看完

16#

这个脚本语言里面没有像C JAVA 那样区分赋值=和判断==吗?

17#

学而时习之

能想到,但不一定能做到。
动动手,更容易发现问题。
18#

居然秒懂了,不过我是学PC的

19#

说的好好有没 QQ

20#

看了这期的评论,感觉好难的样子~~

发新话题 回复该主题