Pau*_*ker 5 flash actionscript-3
我一直在努力改进我的编程习惯,而我的这个习惯让我觉得这可能不是最好的方法.当处理MouseEvent函数调用我必须使用的趋势Event在MouseEvent中PARAMS.
例:
mc.addEventListener(MouseEvent.CLICK, handleClick);
private function handleClick(e:Event):void
{
trace(e.currentTarget.name + " was Clicked");
}
Run Code Online (Sandbox Code Playgroud)
是否有内部一些功能或属性MouseEvent的不可用Event类,这将使使用MouseEvent更多的必需品?我自己想到的唯一原因是保持你的事件/函数参数强类型.
Ada*_*ith 11
如果不将参数键入为MouseEvent,则只需将其强制转换为MouseEvent即可访问特定于MouseEvent子类的属性.例如:
这不起作用:
private function handleClick(e:Event):void
{
trace("altKey down: "+e.altKey);
}
Run Code Online (Sandbox Code Playgroud)
但这会:
private function handleClick(e:MouseEvent):void
{
trace("altKey down: "+e.altKey);
}
Run Code Online (Sandbox Code Playgroud)
不过这样(不推荐,见下文):
private function handleClick(e:Event):void
{
trace("altKey down: "+MouseEvent(e).altKey);
}
Run Code Online (Sandbox Code Playgroud)
一般来说,您希望您的侦听器参数类型只是必要的通用,因此如果使用错误类型的事件调用您的函数,它将以明显的方式失败.
您的示例有效,因为currentTarget是Event基类的属性.但是没有什么可以阻止你的句柄从接收和响应IOErrorEvent或KeyboardEvent,并做一些你不会没有失败的事情(例如,如果你不小心把它设置为听一些除了MouseEvent之外的东西,你不会故意这样做,但如果您复制粘贴addEventListener代码行并更改事件类型但忘记更改处理函数,则可能会发生......这些事情确实发生了.