在编制Flash程序过程中,经常会碰到一段代码:
_root.onEnterFrame=function(){}
还有一些是这样:
This.onLoad=function(){}
Btn.onPress=function(){}
这些代码可以归为一类,都使用了事件处理函数方法。其中有几个关键点、对象、事件和函数。
比如,btn.onPress=function(){},其中的btn即使对象,onPress是事件,function(){}为函数部分。
Btm对象触发onPress事件时调用函数,大家可以参考我提供的“事件处理函数方法.fla”。
下面我们通过这个实例的制作来了解“事件处理函数”的用法:
1.新建一个Flash文档,背景色设置为白色,大小为550×400像素,帧频设置为30帧/秒。将它另存为“事件处理函数方法”
2.我们制作一个子弹元件,(注:制作元件您可以随意,您也可以制作一个苹果),将子弹元件放置到场景中,实例名称命名为“zidan”。制作一个内容为“继续”的按钮元件放置到场景中。在插入两个新场景,内容和刚才的场景一致。如图1所示为“场景1”。
3.在场景1的第1帧上添加如下代码,如图2所示:
_root.onLoad = function() {
zidan._rotation += 90;
};
stop();
注译:在这里_root为对象,onLoad为事件,就是说当_root被加载时触发函数,让zidan的角度自加90°。
接下来在“继续”按钮上添加如下代码,如图3所示:
当单击“继续”按钮时前进至下一个场景。4.在如图4所示的“场景2”的第1帧上加上如下代码,如图5所示:
_root.onEnterFrame = function() {
zidan._rotation++;
if (zidan._rotation == 30) {
delete onEnterFrame;
}
};
stop();
当对象_root每次进入帧时触发函数,zidan的角度每次进入帧时自加1°,到30°时停止。onEnterFrame事件同onLoad事件的不同之处在于,onLoad事件只执行一次,而onEnterFrame事件在播放头每次进入帧时就会触发,如果不关闭flash就会一直执行下去。这样势必要占用大量系统资源,为了避免这种情况,我们可以用delete配合判断语句来终止onEnterFrame事件。
在场景2的“继续”按钮上加入以下代码:
on (release) {
nextScene();
delete onEnterFrame;
}
这里加入“delete onEnterFrame;”的意义在于,如果zidan的角度还没有达到30°时,单击“继续”按钮,同样能够终止onEnterFrame事件。
5.在如图6所示的场景3的第1帧上加入以下代码,如图7所示:
zidan.onPress = function() {
zidan._rotation += 10;
};
Zidan是对象,onPress是事件,意思是当zidan被点击时触发函数执行,每点击一次,zidan的角度自加10°。onPress事件和onRelease事件等可以归为一类,这类事件涉及了人机交互的操作。而onPress和onEnterFrame事件等可以归为一类,这类事件是Flash自己触发的。了解并综合应用这两类事件,就可以制作出丰富多彩的游戏。
最后在场景3的“继续”按钮上添加如下代码:
on (release) {
gotoAndStop("场景 1", 1);
}
用这段代码最后回到场景1,完成这个实例,希望大家通过我的这些小图文,能够很快的掌握一些技巧,为您独立制作flash作品有所帮助。