TC官方合作论坛

 找回密码
 立即注册
查看: 17544|回复: 127

优化脚本必备知识_关于封装功能函数的讲解

  [复制链接]
发表于 2013-7-28 18:48:07 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 蓝丝雨 于 2014-3-7 15:50 编辑

脚本中存在着很多重复的语句,此时我们可以用功能函数来替代,使用功能函数可以让我们的脚本逻辑变得更加清晰,并且易于调试,
让我们先看看对于为什么要封装功能函数的解释

功能函数,我们可以把它理解为在一个脚本中,如果其中有些脚本内容优化完全相同或是相似,为了简化脚本,可以把这些重复
的程序段单独列出,并按一定的格式编写成功能函数,主程序在执行过程中如果需要某一功能函数,通过调用命令来调用该功能
函数,完成后返回主脚本,继续执行后面的脚本。


其实。我们可以把我们的整个程序看做成一个人,比如脚本的名字就是人的名字,那么功能函数,就是人一个个的动作。让我们来举个实例,比如说拿这
个动作。我们每天都要拿很多东西。如果放到代码里,我们要。。。


  1. 1.杯子
  2. 鼠标.移动( 杯子的x坐标, 杯子的y坐标)
  3. 执行拿起动作

  4. 2.筷子
  5. 鼠标.移动(筷子的x坐标, 筷子的y坐标)
  6. 执行拿起动作


  7. 3.汽车
  8. 鼠标.移动(汽车的x坐标, 汽车的y坐标)
  9. 执行拿起动作(超人呦~~)
复制代码
我们不难发现。其实我们每次的动作都是相同的,全部都是鼠标.移动 某坐标,然后执行拿起动作。这时候。我们就该考虑用功能函数了。
下面让我们看看功能函数的写法


  1. 空间名.拿起(杯子的x坐标, 杯子的y坐标)
  2. 空间名.拿起(筷子的x坐标, 筷子的y坐标)
  3. 空间名.拿起(汽车的x坐标, 汽车的y坐标)
  4. 。。。后面想加多少加多少
  5. 功能 拿起(x,y)
  6.     鼠标.移动(x, y)
  7.     执行拿起动作
  8. 功能结束
复制代码
看。是不是代码要简化很多呢?如果每一个动作的代码都要十条甚至几十条,我们能简化多少行的代码呢。想想吧亲~好。让我们来解释一下这个功能函数
的意思。
首先,功能函数的声明定义。是这样的


  1. 功能 函数名(参数a,参数b...)      
  2. 你的重复代码
  3. 功能结束
复制代码


说明参数可以是多个,也可以一个都没有,我们可以把参数理解成一个个未赋值的变量,而调用功能函数时填写的参数则是给这个变量赋值,如果我们只
想单纯的重复执行一段代码。那么只需写成


  1. 功能 函数名()
  2. 你的重复代码
  3. 功能结束
复制代码


接下来是调用,当我们写好功能函数后。我们只要执行调用的命令,功能函数就会执行啦。当然。如果不调用,功能函数是不会自动执行的,以下是调用
代码


  1. 空间名.函数名(参数a,参数b...)
复制代码
调用功能函数时填写的参数我们可以看做是给这个变量赋值,当然。如果你的功能函数不带参数,这样写也是可以的。

  1. 空间名.函数名()
复制代码
接下来,让我们做个小小的实验吧。请在TC的源文件(代码模式)输入以下命令
  1. 空间名.弹出消息框()

  2. 功能 弹出消息框()
  3.     辅助.消息框("我执行啦")
  4. 功能结束
复制代码
然后调试执行以上代码,我们会发现。跳出了一次弹出框,内容是“我执行啦”同理。如果多调用空间名.弹出消息框()几次,弹出框也就多跳出几次。我
们同样也可以试试以下代码

  1. 功能 弹出消息框
  2.     辅助.消息框("我执行啦")
  3. 功能结束
复制代码
如果不调用的话。这段代码根本不会执行,接下来让我们看看带参数的功能函数(下面代码)
  1. 空间名.弹出消息框("异形","铁血战士")

  2. 功能 弹出消息框(Nam1,Nam2)
  3.     辅助.消息框(Nam1&"大战"&Nam2)
  4. 功能结束
复制代码
调试执行上面的代码,我们会发现。弹出框的内容变成了异形大战铁血战士。这是,我们功能函数的参数Nam1和Nam2可以看做是变量。而调用功能函数的
参数"异形","铁血战士"则是在给两个参数赋值


最后。让我们看一下功能函数在脚本中的实际应用吧!让我们来看一个找色的例子(下面代码)
  1. 图像.区域找色(376, 401, 891, 703,#1DB6B6,0,intX, intY)
  2. 如果(intX > 0 && intY > 0)
  3.      鼠标.移动(intX, intY)
  4.      鼠标.左键单击()
  5. 如果结束
  6. 图像.区域找色(376, 401, 891, 703,#A92929,0,intX, intY)
  7. 如果(intX > 0 && intY > 0)
  8.      鼠标.移动(intX, intY)
  9.      鼠标.左键单击()
  10. 如果结束
  11. 图像.区域找色(376, 401, 891, 703,#7A1EB7,0,intX, intY)
  12. 如果(intX > 0 && intY > 0)
  13.      鼠标.移动(intX, intY)
  14.      鼠标.左键单击()
  15. 如果结束
  16. 图像.区域找色(376, 401, 891, 703,#2590D8,0,intX, intY)
  17. 如果(intX > 0 && intY > 0)
  18.      鼠标.移动(intX, intY)
  19.      鼠标.左键单击()
  20. 如果结束
复制代码
游客,如果您要查看本帖隐藏内容请回复

鉴别.gif
回复

使用道具 举报

发表于 2013-7-28 19:02:31 | 显示全部楼层
沙发
回复 支持 反对

使用道具 举报

发表于 2013-7-28 19:15:14 | 显示全部楼层
看下
回复 支持 反对

使用道具 举报

发表于 2013-7-28 19:38:08 | 显示全部楼层
哈哈哈哈哈哈哈
回复 支持 反对

使用道具 举报

发表于 2013-7-28 19:44:06 | 显示全部楼层
顶啊顶啊顶...
回复 支持 反对

使用道具 举报

发表于 2013-7-28 20:07:37 | 显示全部楼层
++++++++++++++
回复 支持 反对

使用道具 举报

发表于 2013-7-29 08:57:07 | 显示全部楼层
tertert
回复 支持 反对

使用道具 举报

发表于 2013-7-29 15:47:05 | 显示全部楼层
学习下!!!
回复 支持 反对

使用道具 举报

发表于 2013-7-29 22:27:29 | 显示全部楼层
KKKKKKKKKKKKKKKK
回复 支持 反对

使用道具 举报

发表于 2013-7-29 23:46:00 | 显示全部楼层
学习拉~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-15 18:08 , Processed in 0.060050 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表