加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – AS3:为什么在Event正常工作时使用MouseEvent作为函数P

发布时间:2020-12-15 07:29:01 所属栏目:百科 来源:网络整理
导读:我一直在努力改进我的编程习惯,而我的这个习惯让我觉得这可能不是最好的方法.处理MouseEvent函数调用时,我倾向于在params中使用Event over MouseEvent. 例: mc.addEventListener(MouseEvent.CLICK,handleClick);private function handleClick(e:Event):void
我一直在努力改进我的编程习惯,而我的这个习惯让我觉得这可能不是最好的方法.处理MouseEvent函数调用时,我倾向于在params中使用Event over MouseEvent.

例:

mc.addEventListener(MouseEvent.CLICK,handleClick);

private function handleClick(e:Event):void
{
     trace(e.currentTarget.name + " was Clicked");
}

在MouseEvent中是否有一些功能或属性在Event类中不可用,这会使MouseEvent变得更加必要?我自己想到的唯一原因是保持你的事件/函数参数强类型.

解决方法

如果不将参数键入为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基类的属性.但是没有什么可以阻止你的句柄从接收和响应IOErrorEvent或KeyboardEvent,并做一些你不会没有失败的事情(例如,如果你不小心把它设置为听一些除了MouseEvent之外的东西,你不会故意这样做,但如果您复制粘贴addEventListener代码行并更改事件类型但忘记更改处理函数,则可能会发生……这些事情确实发生了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读