马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 蓝丝雨 于 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)
- 鼠标.左键单击()
- 如果结束
复制代码
|