事件处理函数方法是一种类方法,它在事件在该类的实例上发生时调用。例如,Button 类定义 onPress
事件处理函数,只要按下鼠标就对 Button 对象调用该处理函数。但是,与一个类的其它方法不同,您没有直接调用事件处理函数;Flash Player 在相应事件发生时自动调用事件处理函数。
默认情况下,事件处理函数方法是未定义的:在发生特定事件时,将调用其相应的事件处理函数,但应用程序不会进一步响应该事件。要让应用程序响应该事件,需要使用 function 语句定义一个函数,然后将该函数分配给相应的事件处理函数。然后,只要发生该事件,就自动调用分配给该事件处理函数的函数。
事件处理函数由以下三部分组成:事件所应用的对象、对象的事件处理函数方法的名称和分配给事件处理函数的函数。下例显示事件处理函数的基本结构。
object
.eventMethod
= function () { // 您的代码,对事件作出反应 }
例如,假定您在舞台上具有名为 next_btn
的按钮。以下代码将一个函数分配给按钮的 onPress
事件处理函数;该函数将播放头向前移动到时间轴上的下一帧。
next_btn.onPress = function () nextFrame(); }
在以上代码中,nextFrame()
函数被直接分配给 onPress
。您也可以将一个函数引用(名称)分配给某一事件处理函数方法,然后在以后定义该函数。
// 将一个函数引用分配给按钮的 onPress 事件处理函数方法 next_btn.onPress = goNextFrame; // 定义 doSubmit() 函数 function goNextFrame() { nextFrame(); }
请注意,您将函数引用(而不是函数的返回值)分配给 onPress
事件处理函数。
// 错误! next_btn.onPress = goNextFrame(); // 正确。 next_btn.onPress = goNextFrame;
某些事件处理函数接收提供与发生的事件有关的信息的传递参数。例如,在文本字段实例获取键盘焦点时调用 TextField.onSetFocus
事件处理函数。此事件处理函数接收对以前具有键盘焦点的文本字段对象的引用。
例如,以下代码将某些文本插入刚失去键盘焦点的文本字段。
userName_txt.onSetFocus = function(oldFocus_txt) { oldFocus_txt.text = "I just lost keyboard focus"; }
以下动作脚本类定义事件处理函数:Button、ContextMenu、ContextMenuItem、Key、
LoadVars、LocalConnection、Mouse、MovieClip、MovieClipLoader、Selection、SharedObject、Sound、Stage、TextField、XML 和 XMLSocket。有关它们提供的事件处理函数的更多信息,请参见动作脚本字典概述中这些类的相应条目。
还可以将函数分配给在运行时创建的对象的事件处理函数。例如,以下代码创建一个新的影片剪辑实例 (newclip_mc
),然后将一个函数分配给该剪辑的 onPress
事件处理函数。
_root.attachMovie("symbolID", "newclip_mc", 10); newclip_mc.onPress = function () { trace("You pressed me"); }
有关更多信息,请参见在运行时创建影片剪辑。