在 Flash 中,似乎有两组鼠标点击事件:
- onMouseUp, onMouseDown
- onPress, onRelease
这些事件之间有什么实际区别吗?我无法从文档中看出,也没有注意到实际使用中的任何内容,但是对于相同的基本事件有两组不同的名称似乎很奇怪。我错过了什么吗?它们之间有区别吗?
澄清:这是针对 Flash 8 的 ActionScript 2 代码。
在 Flash 中,似乎有两组鼠标点击事件:
这些事件之间有什么实际区别吗?我无法从文档中看出,也没有注意到实际使用中的任何内容,但是对于相同的基本事件有两组不同的名称似乎很奇怪。我错过了什么吗?它们之间有区别吗?
澄清:这是针对 Flash 8 的 ActionScript 2 代码。
onMouseDown 和 onMouseUp 是任何东西都可以通过 Mouse.addListener() 监听的通用事件。无论在何处单击鼠标,它们都会被触发。
onPress 和 onRelease 特定于特定的 MovieClip。只有当鼠标在该 MovieClip 上被按下或释放时,它们才会被触发。onReleaseOutside 也很重要...对于您在 MovieClip 上单击,然后将鼠标拖动到外部,然后释放鼠标的情况。在这种情况下,不会有 onRelease 事件,只有 onReleaseOutside 事件,所以如果你不听后者,你的程序会认为鼠标按钮卡住了。
Press/Release 是交互事件,而不是鼠标事件。如果您使用键盘激活按钮或 MC(通过 Tab 键和按空格键),它将触发 Press 事件但不会触发 MouseDown。同样,如果您单击禁用的按钮,则会触发 MouseDown 事件,但不会触发 Press(因为没有发生按钮交互)。
不是 Flash 开发人员,但在普通的 Windows 应用程序中,您可以使用空格键按下按钮,然后通过 Enter 键激活它。
此外,MouseUp/Down 可以在任何地方发生,并且可能不暗示任何事情。因此,特定控件上的 Press/Release 具有更大的意义。
我在谷歌搜索问题时发现了这一点:
http://www.gogoat.com/2006/07/27/onpress-vs-onmousedown/
看起来即使鼠标在影片剪辑之外,mouseUp/mouseDown 事件也会触发,而 onPress/Release 会在处理之前自动检查鼠标是否在剪辑内。我本可以发誓我对此进行了测试,但我只是验证了它,所以我一定没有。
onPress 和 onRelease 是 AS2 代码的保留,它们已被 AS3 中的 onMouseDown 和 onMouseUp 取代,您可以在AS2 迁移指南中阅读。