FlashAS学习:函数的定义和调用

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

演示效果:

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

functioncont(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);

这样,复制的快慢就由我们自己任意控制了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有