日期:2013-11-18  浏览次数:20614 次

  演示效果:

点击这里下载源文件

  有人将函数比喻成一个加工的机器,一个碾米机输入的是稻谷,输出的是大米;一个random(5)函数,输入的是5,输出的是0~4的任意一个;random()是FLASH本身内置的,我们可以本人定义一个这样的加工的机器,这样,输入什么,输出什么,就全由我们本人作主了。如今开始定义一个这样的函数,只需我们输入一个数,就输出这个数的3倍的数。

function cont(n:Number){
trace(3*n)
}

  以上定义了一个函数,这个函数好比一个停放在这里没有使用的机器。先看看这个机器是干什么用的呢.function是AS中的规定,通知我们,将要定义一个函数,cont是这个函数的名字,就好比加工的机器的名字;n是参数,就好比是要输入到机器中的东西.trace(3*n)是这个函数要执行的内容,就好比机器将要把输入的东西怎样处理.如今我们可以开动这个机器了.跟着写:
cont(5)这样就表示执行函数了,为函数输入一个数字5.
以上定义了一个简单的函数.其实定义函数的次要目的是为了多次调用的方便,比如有很多按钮上都要调用这个函数,并且要求输入的参数不同,那么用途就体现出来了.比如调用上面的函数cont:

on(press){
cont(6)//输出18
}

on(press){
cont(7)//输出21
}

on(press){
cont(8)//输出24
}

  使用函数还有一个好处,就是可以设定间隔多少时间进行调用.例如我们要每间隔1秒调用以下上面的cont函数,可以这样写.
setInterval(cont,1000,5)//cont为函数名,1000为间隔时间,单位是毫秒,5就是参数.于是每隔1秒钟就会调用一次cont函数,但我们如果希望该函数只调用10次就停止,该如何操作呢?完整AS如下:(请复制此AS进行测试)

function cont(n:Number) {
trace(3*n);
if(m==undefined){//由于没有定义m,m在这里只要第一次读取符合条件,第二次之后,就直接进行++了
m=0
}
m++
if (m>=10) {
clearInterval(aa);//清除对setInterval的调用
}
}
aa=setInterval(cont,1000,5)
  联系上节中的onEnterFram的用法,如果用函数间隔调用来处理,这样写:
var i:Number = 0;
function dup(max:Number) {
duplicateMovieClip("_root.bug", "bug"+i, i);
// 复制bug,bug的新ID分别是bug0 bug1 bug2...
_root["bug"+i]._x = random(400);
// 新的bug的坐标分别是400内任意的数
_root["bug"+i]._y = random(400);
_root["bug"+i]._rotation = random(180);
// 新的bug的旋转是180内任意的数,便于让虫子的头朝向各个方向
i++;
// 由于bug新的ID不能相反,故需求i++
if (i>=max) {
// 如果复制的数量大于等于50
clearInterval(aa);
// delete this.onEnterFrame;
// 删除此事件
}
trace(i);
// 跟踪i,并且测试在没有delete的情况下i的情况
}
aa = setInterval(dup, 500, 50);
  这样,复制的快慢就由我们本人任意控制了。