Если вы не введете параметр как MouseEvent, вам просто нужно привести его как MouseEvent, чтобы получить доступ к свойствам, специфичным для подкласса MouseEvent. Например:
Это не сработает:
private function handleClick(e:Event):void
{
trace("altKey down: "+e.altKey);
}
Но это будет:
private function handleClick(e:MouseEvent):void
{
trace("altKey down: "+e.altKey);
}
Однако так будет (не рекомендуется, см. Ниже):
private function handleClick(e:Event):void
{
trace("altKey down: "+MouseEvent(e).altKey);
}
Вообще говоря, вы хотите, чтобы тип параметра прослушивателя был настолько общим, насколько это необходимо, чтобы, если ваша функция вызывается с неправильным типом события, она не выполнялась очевидным образом.
Ваш пример работает, потому что currentTarget является свойством базового класса Event. Но ничто не мешает вашему handleClick получать и отвечать на IOErrorEvent или KeyboardEvent и делать то, чего вы не ожидаете, без сбоев (например, если вы случайно настроили его для прослушивания чего-то другого, кроме MouseEvent, что вы не сделали бы намеренно , но может произойти, если вы скопируете и вставите строку кода addEventListener и измените тип события, но забудете изменить функцию-обработчик ... такие вещи случаются).