(3)定义按钮的动作脚本
选择舞台上的第1个按钮,打开【动作】面板,在其中输入“on(”,这时弹出一个鼠标事件下拉列表,从其中双击【press】,然后输入:
){
play();
}
这样,第一个按钮的动作脚本就定义完成了,完整的动作脚本是:
on(press){
play();
}
这个动作脚本的功能是,当用鼠标单击这个按钮时,舞台上的动画开始播放。
第2个按钮的动作脚本和第1个的定义过程类似,先选择第2个按钮,在【动作】面板中按照前面的方法定义这个按钮的动作脚本:
on(press){
stop();
}
这个动作脚本的功能是,当用鼠标单击这个按钮时,舞台上的动画停止播放。
好,下面我们按快捷键Ctrl+Enter,测试一下动画吧,怎么样?按钮已经可以控制小球的跳动了吧(文件路径:配套光盘/……/按钮控制小球跳动(1).fla)?
3.事件处理函数方法
事件处理函数方法是一种类方法,事件在该类的实例上发生时产生调用。例如,Button(按钮)类定义onPress
事件处理函数,只要按下鼠标就对Button对象调用该处理函数。Flash Player在相应事件发生时自动调用事件处理函数。
默认情况下,事件处理函数方法是未定义的:在发生特定事件时,将调用其相应的事件处理函数,但应用程序不会进一步响应该事件。要让应用程序响应该事件,需要使用 function语句定义一个函数,然后将该函数分配给相应的事件处理函数。这样,只要发生该事件,就自动调用分配给该事件处理函数的函数。
事件处理函数由三部分组成:事件所应用的对象、对象的事件处理函数方法的名称和分配给事件处理函数的函数。事件处理函数的基本结构为:
对象.事件处理函数方法名称 = function () {
// 你编写的程序代码,对事件作出反应
}
下面我们还是针对上面那个实例,用事件处理函数方法编写程序来实现按钮控制小球跳动的功能。
(1)定义按钮实例名称
按照前面的方法,将配套光盘上的小球跳动动画文件打开,并且引用两个按钮元件实例。分别单击两个按钮实例,在【属性】面板中分别定义它们的实例名称为:play_btn和stop_btn。
(2)定义事件处理函数
新建一个图层,并将它重新命名为“action”。选择这个图层的第1帧,在【动作】面板中定义这个帧的动作脚本为:
play_btn.onPress=function(){
play();
}
stop_btn.onPress=function(){
stop();
}
测试一下,怎么样?和前面的效果一样吧(文件路径:配套光盘/……/按钮控制小球跳动(2).fla)。
4.事件侦听器
事件侦听器让一个对象(称作侦听器对象)接收由其他对象(称作广播器对象)生成的事件。广播器对象注册侦听器对象以接收由该广播器生成的事件。例如,你可以注册按钮实例可以从文本字段对象接收onChanged
通知。这里需要说明的是,可以注册多个侦听器对象以从一个广播器接收事件,也可以注册一个侦听器对象以从多个广播器接收事件。
事件侦听器的事件模型类似于事件处理函数方法的事件模型,但有两个主要差别:
u 你向其分配事件处理函数的对象不是发出该事件的对象。
u 你调用广播器对象的特殊方法addListener()
,该方法将注册侦听器对象以接收其事件。
要使用事件侦听器,你需要用具有该广播器对象生成的事件名称的属性创建侦听器对象。然后,将一个函数分配给该事件侦听器(以某种方式响应该事件)。最后,你在正广播该事件的对象上调用addListener()
,向它传递侦听器对象的名称。
事件侦听器模型的一般形式为:
listenerObject.eventName = function(参数){//定义侦听器对象事件函数
// 此处是你的代码
};
broadcastObject.addListener(listenerObject);
其中listenerObject是指定侦听器对象的名称,broadCastObject是名称,eventName是事件名称。
指定的侦听器对象(listenerObject)可以是任何对象,例如舞台上的影片剪辑或按钮实例,或者可以是任何动作脚本类的实例。事件名称是在广播器对象(broadCastObject)上发生的事件,然后将该事件广播到侦听器对象(listenerObject),侦听器对象的事件函数对事件作出反应。
使用侦听器对象处理事件,可以使你的程序更加安全可靠。有关侦听器对象应用的详细内容请参阅本书第八章第三节的相关内容。
5.按钮事件和MC事件
on()
处理函数处理按钮事件,而onClipEvent()
处理函数处理影片剪辑事件。前面我们已经详细讨论了on()
处理函数处理按钮事件的方法,用onClipEvent()
处理函数处理影片剪辑事件的方法类似,这里就不再详述。下面我们完整地列举一下on()
和onClipEvent()
事件处理函数所支持的事件。
(1)on()
事件处理函数所支持的事件
按钮可以响应鼠标事件,还可以响应Key Press(按键)事件。对于按钮而言,可指定触发动作的按钮事件有7种:
u press:事件发生于鼠标在按钮上方,并按下鼠标时。
u release:事件发生于在按钮上方按下鼠标,接着松开鼠标时。也就是“按一下”鼠标。
u releaseOutside:事件发生于在按钮上方按下鼠标,接着把鼠标移到按钮之外,然后松开鼠标时。
u rollOver:事件发生于鼠标滑入按钮时。
u rollOut:事件发生于鼠标滑出按钮时。
u dragOver:事件发生于按着鼠标不松手,鼠标滑入按钮时。
u dragOut:事件发生于按着鼠标不松手,鼠标滑出按钮时。
u keyPress:事件发生于用户按下指定的按键时。
(2)onClipEvent()
事件处理函数所支持的事件
onClipEvent()
事件处理函数使用的一般形式为:
onClipEvent(
movieEvent){
// 此处是你的语句,用来响应事件。
}
其中movieEvent是一个事件“触发器”。当事件发生时,执行该事件后面大括号中的语句。对于影片剪辑而言,可指定的触发事件有9种,分别是:
u load:
影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。
u unload
:在时间轴中删除影片剪辑之后,此动作在第1帧中启动。在向受影响的帧附加任何动作之前,先处理与Unload
影片剪辑事件关联的动作。
u enterFrame
:以影片剪辑帧频不断触发的动作。首先处理与enterFrame
剪辑事件关联的动作,然后才处理附加到受影响帧的所有帧动作。
u mouseMove
:每次移动鼠标时启动此动作。_xmouse
和_ymouse
属性用于确定当前鼠标位置。
u mouseDown
:当按下鼠标左键时启动此动作。
u mouseUp
:当释放鼠标左键时启动此动作。
u keyDown
:当按下某个键时启动此动作。
u keyUp
:当释放某个键时启动此动作。
u data
:当在loadVariables()
或loadMovie()
动作中接收数据时启动此动作。当与loadVariables()
动作一起指定时,data
事件只在加载最后一个变量时发生一次。当与loadMovie()
动作一起指定时,获取数据的每一部分时,data
事件都重复发生。