本帖最后由 蓝丝雨 于 2014-3-7 15:50 编辑  
 
脚本中存在着很多重复的语句,此时我们可以用功能函数来替代,使用功能函数可以让我们的脚本逻辑变得更加清晰,并且易于调试, 
让我们先看看对于为什么要封装功能函数的解释 
 
功能函数,我们可以把它理解为在一个脚本中,如果其中有些脚本内容优化完全相同或是相似,为了简化脚本,可以把这些重复 
的程序段单独列出,并按一定的格式编写成功能函数,主程序在执行过程中如果需要某一功能函数,通过调用命令来调用该功能 
函数,完成后返回主脚本,继续执行后面的脚本。 
 
 
其实。我们可以把我们的整个程序看做成一个人,比如脚本的名字就是人的名字,那么功能函数,就是人一个个的动作。让我们来举个实例,比如说拿这 
个动作。我们每天都要拿很多东西。如果放到代码里,我们要。。。 
 
 
- 1.杯子
 
 - 鼠标.移动( 杯子的x坐标, 杯子的y坐标)
 
 - 执行拿起动作
 
  
- 2.筷子
 
 - 鼠标.移动(筷子的x坐标, 筷子的y坐标)
 
 - 执行拿起动作
 
  
 
- 3.汽车
 
 - 鼠标.移动(汽车的x坐标, 汽车的y坐标)
 
 - 执行拿起动作(超人呦~~)
 
  复制代码 我们不难发现。其实我们每次的动作都是相同的,全部都是鼠标.移动 某坐标,然后执行拿起动作。这时候。我们就该考虑用功能函数了。 
下面让我们看看功能函数的写法 
 
 
- 空间名.拿起(杯子的x坐标, 杯子的y坐标)
 
 - 空间名.拿起(筷子的x坐标, 筷子的y坐标)
 
 - 空间名.拿起(汽车的x坐标, 汽车的y坐标)
 
 - 。。。后面想加多少加多少
 
 - 功能 拿起(x,y)
 
 -     鼠标.移动(x, y)
 
 -     执行拿起动作
 
 - 功能结束
 
  复制代码 看。是不是代码要简化很多呢?如果每一个动作的代码都要十条甚至几十条,我们能简化多少行的代码呢。想想吧亲~好。让我们来解释一下这个功能函数 
的意思。 
首先,功能函数的声明定义。是这样的 
 
 
- 功能 函数名(参数a,参数b...)       
 
 - 你的重复代码
 
 - 功能结束
 
  复制代码 
 
说明参数可以是多个,也可以一个都没有,我们可以把参数理解成一个个未赋值的变量,而调用功能函数时填写的参数则是给这个变量赋值,如果我们只 
想单纯的重复执行一段代码。那么只需写成 
 
 
 
 
接下来是调用,当我们写好功能函数后。我们只要执行调用的命令,功能函数就会执行啦。当然。如果不调用,功能函数是不会自动执行的,以下是调用 
代码 
 
 
调用功能函数时填写的参数我们可以看做是给这个变量赋值,当然。如果你的功能函数不带参数,这样写也是可以的。 
 
接下来,让我们做个小小的实验吧。请在TC的源文件(代码模式)输入以下命令 
- 空间名.弹出消息框()
 
  
- 功能 弹出消息框()
 
 -     辅助.消息框("我执行啦")
 
 - 功能结束
 
  复制代码 然后调试执行以上代码,我们会发现。跳出了一次弹出框,内容是“我执行啦”同理。如果多调用空间名.弹出消息框()几次,弹出框也就多跳出几次。我 
们同样也可以试试以下代码 
 
- 功能 弹出消息框
 
 -     辅助.消息框("我执行啦")
 
 - 功能结束
 
  复制代码 如果不调用的话。这段代码根本不会执行,接下来让我们看看带参数的功能函数(下面代码) 
- 空间名.弹出消息框("异形","铁血战士")
 
  
- 功能 弹出消息框(Nam1,Nam2)
 
 -     辅助.消息框(Nam1&"大战"&Nam2)
 
 - 功能结束
 
  复制代码 调试执行上面的代码,我们会发现。弹出框的内容变成了异形大战铁血战士。这是,我们功能函数的参数Nam1和Nam2可以看做是变量。而调用功能函数的 
参数"异形","铁血战士"则是在给两个参数赋值 
 
 
最后。让我们看一下功能函数在脚本中的实际应用吧!让我们来看一个找色的例子(下面代码) 
- 图像.区域找色(376, 401, 891, 703,#1DB6B6,0,intX, intY)
 
 - 如果(intX > 0 && intY > 0)
 
 -      鼠标.移动(intX, intY)
 
 -      鼠标.左键单击()
 
 - 如果结束
 
 - 图像.区域找色(376, 401, 891, 703,#A92929,0,intX, intY)
 
 - 如果(intX > 0 && intY > 0)
 
 -      鼠标.移动(intX, intY)
 
 -      鼠标.左键单击()
 
 - 如果结束
 
 - 图像.区域找色(376, 401, 891, 703,#7A1EB7,0,intX, intY)
 
 - 如果(intX > 0 && intY > 0)
 
 -      鼠标.移动(intX, intY)
 
 -      鼠标.左键单击()
 
 - 如果结束
 
 - 图像.区域找色(376, 401, 891, 703,#2590D8,0,intX, intY)
 
 - 如果(intX > 0 && intY > 0)
 
 -      鼠标.移动(intX, intY)
 
 -      鼠标.左键单击()
 
 - 如果结束
 
  复制代码 
[url=http://bbs.tyuyan.com/thread-30762-1-1.html][/url] |