3

在 Flash 中,似乎有两组鼠标点击事件:

  • onMouseUp, onMouseDown
  • onPress, onRelease

这些事件之间有什么实际区别吗?我无法从文档中看出,也没有注意到实际使用中的任何内容,但是对于相同的基本事件有两组不同的名称似乎很奇怪。我错过了什么吗?它们之间有区别吗?

澄清:这是针对 Flash 8 的 ActionScript 2 代码。

4

5 回答 5

5

onMouseDown 和 onMouseUp 是任何东西都可以通过 Mouse.addListener() 监听的通用事件。无论在何处单击鼠标,它们都会被触发。

onPress 和 onRelease 特定于特定的 MovieClip。只有当鼠标在该 MovieClip 上被按下或释放时,它们才会被触发。onReleaseOutside 也很重要...对于您在 MovieClip 上单击,然后将鼠标拖动到外部,然后释放鼠标的情况。在这种情况下,不会有 onRelease 事件,只有 onReleaseOutside 事件,所以如果你不听后者,你的程序会认为鼠标按钮卡住了。

于 2008-10-13T15:59:43.007 回答
4

Press/Release 是交互事件,而不是鼠标事件。如果您使用键盘激活按钮或 MC(通过 Tab 键和按空格键),它将触发 Press 事件但不会触发 MouseDown。同样,如果您单击禁用的按钮,则会触发 MouseDown 事件,但不会触发 Press(因为没有发生按钮交互)。

于 2008-10-14T01:52:21.813 回答
1

不是 Flash 开发人员,但在普通的 Windows 应用程序中,您可以使用空格键按下按钮,然后通过 Enter 键激活它。

此外,MouseUp/Down 可以在任何地方发生,并且可能不暗示任何事情。因此,特定控件上的 Press/Release 具有更大的意义。

于 2008-10-13T15:21:30.040 回答
1

我在谷歌搜索问题时发现了这一点:

http://www.gogoat.com/2006/07/27/onpress-vs-onmousedown/

看起来即使鼠标在影片剪辑之外,mouseUp/mouseDown 事件也会触发,而 onPress/Release 会在处理之前自动检查鼠标是否在剪辑内。我本可以发誓我对此进行了测试,但我只是验证了它,所以我一定没有。

于 2008-10-13T16:01:12.630 回答
-1

onPress 和 onRelease 是 AS2 代码的保留,它们已被 AS3 中的 onMouseDown 和 onMouseUp 取代,您可以在AS2 迁移指南中阅读。

于 2008-10-13T15:46:10.833 回答