如何在 Flex 中处理 CLICK 和 MouseDown 事件?
我有一个场景,我正在监听对象的 CLICK
和 MouseDown
事件。
在 MouseDown 上,我执行 startDrag()
。在单击时,我执行其他操作。
但问题是,MouseDown 事件首先触发并启动拖动。单击事件不会触发。我该如何解决这个问题?
I have a scenario where I am listening to both CLICK
and MouseDown
events for an object.
On MouseDown I do a startDrag()
. And on Click, I perform something else.
But the problem is that, MouseDown event fires first and it initiates a drag. The click event does not fire. How do I solve this issue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以侦听 MouseDown 事件,并在其触发时订阅 MouseMove 和 MouseUp 事件,并记住 MouseDown 上光标的坐标。然后确定一个增量(例如 1px),这将是开始拖动的标志。因此,如果 MouseMove 调用,您将检查当前鼠标位置并确定用户是否确实在拖动(使用您的增量)。在本例中,调用
startDrag()
。在其他情况下,将调用 Click 事件。并记住取消订阅活动! :)
You can listen MouseDown event and when it fires subscribe MouseMove and MouseUp events and remember coordinates of cursor on MouseDown. Then determine a delta (say 1px) which will be a sign of starting dragging. So if MouseMove invokes you check current mouse position and determine if user is really dragging (using your delta). In this case invoke
startDrag()
. In other case Click event will be invoked.And remember unsubscribing events! :)