使用组件 |
|
|
|
| 创建组件 > 创建 ActionScript 类文件 > 发送事件 | |||
如果希望组件广播除可从父类继承的事件之外的事件,则必须在组件的类文件中调用 dispatchEvent() 方法。
dispatchEvent() 方法在 mx.events.EventDispatcher 类中定义,扩展 UIObject 的所有组件都会继承此方法。(请参阅"组件语言参考"中的EventDispatcher 类。)
在类文件的顶部还应为每个新事件添加一个 Event 元数据标记。有关详细信息,请参阅关于 Event 标记。
|
注意 |
有关在 Flash 应用程序中处理组件事件的信息,请参阅处理组件事件。 |
在组件 ActionScript 类文件的正文中,您可以使用 dispatchEvent() 方法来广播事件。dispatchEvent() 方法的语法如下:
dispatchEvent(eventObj)
eventObj 参数是一个描述事件的 ActionScript 对象(请参阅本节后面部分中的示例)。
在调用 dispatchEvent() 方法之前,必须在代码中对其进行声明,如下所示:
private var dispatchEvent:Function;
此外,还必须创建一个事件对象以传递给 dispatchEvent()。该事件对象包含侦听器可用来处理该事件的有关信息。
在发送事件之前可以显式地构建一个事件对象,如下面示例所示:
var eventObj = new Object(); eventObj.type = "myEvent"; eventObj.target = this; dispatchEvent(eventObj);
您也可以使用快捷语法在一行代码中设置 type 属性和 target 属性的值,并发送事件:
ancestorSlide.dispatchEvent({type:"revealChild", target:this});
在上面的示例中,由于 target 属性是隐式的,因此,设置该属性是可选操作。
Flash 8 文档中对每个事件的说明列出了可选和必需的事件属性。例如,ScrollBar.scroll 事件除了使用 type 和 target 属性外,还使用 detail 属性。有关详细信息,请参阅"组件语言参考"中的事件说明。
下表列出了由各种类广播的公共事件。如果事件适用于组件,每个组件都应广播这些事件。这里没有列出所有组件的全部事件,只列出了可能会由其它组件重新使用的事件。虽然某些事件未指定任何参数,但所有事件都有隐式参数:对广播事件的对象的引用。
|
事件 |
使用 |
|---|---|
|
|
由 Button 组件使用,或在鼠标单击没有其它含义时使用。 |
|
|
由 List、ComboBox 和其它文本输入组件使用。 |
|
|
由 ScrollBar 和其它导致滚动(在滚动弹出菜单上滚动"缓冲器")的控件使用。 |
此外,由于是从基类继承而来,所有组件都广播以下事件:
|
UIComponent 事件 |
说明 |
|---|---|
|
|
组件正在创建或加载其子对象。 |
|
|
组件正在卸载其子对象。 |
|
|
组件现在有输入焦点。某些 HTML 等效组件(ListBox、ComboBox、Button、Text)还可以广播 |
|
|
组件已失去输入焦点。 |
|
|
组件已被移至新位置。 |
|
|
组件大小已更改。 |
下表对一些常见的键事件进行说明:
|
键事件 |
说明 |
|---|---|
|
|
按下某个键。 |
|
|
释放某个键。 |
|
|
|
|