FlashAS实例学习:onEnterFrame事件与摧毁此事件

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

onEnterFrame?是一个以影片剪辑帧频不断触发的动作,利用它可以不断地执行{}中的命令,但是执行完毕后,应当将此事件摧毁,以释放脚本所用的内存。

摧毁此事件的语法是delete

我们来复制50个虫子,当复制完毕后,摧毁此 onEnterFrame事件。请按照下列步骤操作:

1、放一个虫子在舞台上,实例名为bug,

2、选中第一桢,打开动作面板,输入:

var max:Number = 50;

var i:Number = 0;

onEnterFrame = function () {

duplicateMovieClip("bug", "bug"+i, i);

// 复制bug,bug的新ID分别是bug0 bug1 bug2...

this["bug"+i]._x = random(400);

// 新的bug的坐标分别是400内任意的数

this["bug"+i]._y = random(400);

this["bug"+i]._rotation = random(180);

// 新的bug的旋转是180内任意的数,便于让虫子的头朝向各个方向

i++;

// 由于bug新的ID不能相同,故需要i++

if (i>=50) {

// 如果复制的数量大于等于50

delete this.onEnterFrame;

// 删除此事件

}

trace(i);

// 跟踪i,并且测试在没有delete的情况下i的情况

};

点评:

1、在使用onEnterFrame的时候,一定要考虑到delete this.onEnterFrame,如果在同一个SWF文档中有比较多的onEnterFram的时候,会明显的感觉到电脑的负荷比较重的。

2、[]符号本身是数组操作符(关于数组,后面有比较详细的教程),使用数组操作符,可以对当前对象进行引用,在这里就相当于bug0、bug、1bug2....bug50共51个影片剪辑名称的浓缩写法。

3、random()是内置类之核心对象中的数学类对象中的一个函数,例: random(4)可能得到 0,1,2,3中的任何一个.

4、要多看帮助说明,即使看不懂,也要坚持,否则提高AS写作水平就比较难。

5、利用onEnterFrame原则上是按照桢频率的速度读取的,即:如果桢频率为12桢/秒,那么每读取一次需要的时间是1/12秒,这只是原则上是这样的,但当AS脚本很多的时候,往往读取的速度要下降,因此此事件没有利用setInterval间隔时间调用函数好用。下一节,学习定义函数并且调用。

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