gpt4 book ai didi

flash - AS3 : Why use MouseEvent as function Param when Event works fine?

转载 作者:行者123 更新时间:2023-12-04 16:55:51 27 4
gpt4 key购买 nike

我一直在努力改进我的编程实践,我的这一习惯让我认为这可能不是最好的方法。办理时MouseEvent函数调用我倾向于使用 EventMouseEvent在参数中。

示例:

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 基类的属性。但是没有什么可以阻止您的 handleClick 接收和响应 IOErrorEvent 或 KeyboardEvent,并且做一些您不期望的事情而不会失败(例如,如果您不小心将其设置为监听 MouseEvent 以外的其他内容,您不会故意这样做,但如果您复制粘贴 addEventListener 代码行并更改事件类型但忘记更改处理程序函数,则可能会发生……这些事情确实会发生)。

关于flash - AS3 : Why use MouseEvent as function Param when Event works fine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5597373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com