Event对象属性范围非常大,这些属性是基于w3c标准的,但是Flex并没有全部实现它们。当你在监听函数中声明一个Event对象,你可以声明为Event类型,也可以声明为具体的类型,下面的例子声明的Event对象是MouseEvent类型的。
public function performAction(e:MouseEvent):void {
...
}
大多数组件都是生成具体类型的Event类型的事件对象,例如,鼠标点击事件产生一个MouseEvent类型的事件对象。明细了更加具体的事件类型后,你可以不用把这个event对象类型转换就可以访问它的具体的属性,此外,Event类的一些子类都有自己的独特的方法,例如LogEvent有个getLevelString()方法,该方法返回String类型的Log的level,而泛泛的Event对象则没有此方法,
只要你把event对象强转成一个具体的事件 类型,你就可以在事件监听函数中访问时间对象的属性即使你没有在声明函数的时候把它声明为具体的事件类型 ,下面的例子,函数定义了Event类型的对象,可是在函数内,为了能够访问属于MouseEvent的localX和localY属性,就必须把Event类型转换为MouseEvent类型。
如果在定义函数的时候已经声明为一个具体的类型就不需要强转类型了,如下例子:
private function customLogEvent(e:MouseEvent):void { ... }
前面的例子也可以在你需要访问具体事件类型的属性时再强转它,如下例:
这种方式占用更少的系统资源,但是最好还是声明为具体的事件类型,Event类的每一个子类都有属于每一种事件的独特的属性,例如MouseEvent类中定义了和输入设备有关的一些事件的类型,比如:CLICK, DOUBLE_CLICK, MOUSE_DOWN, 和 MOUSE_UP 这些类型。