2

当有人在浏览器中开始拖动(例如,MOUSE_DOWN事件)、将鼠标拖到浏览器窗口外、释放按钮、然后将鼠标移回浏览器上方时,从 Flash 检测的正确方法是什么?

例如(假设 StackOverflow 是一个 Flash 应用程序):

替代文字 http://img.skitch.com/20100531-t99mni7s8sjs8ycqe5ebyaxphm.png

我已经尝试过“显而易见”的事情,检查event.buttonDown处理MOUSE_MOVE程序,但即使鼠标按钮向上,也在第 2 步(上图)中event.buttonDowntrue

那么,还有其他方法可以检查鼠标按钮的“真实”状态吗?或者任何其他方式来处理这种情况?

4

3 回答 3

2

在对 Flex 源代码进行了一些挖掘之后,他们似乎使用了该SandboxMouseEvent.MOUSE_UP_SOMEWHERE事件。一些有限的测试表明,这是在 Flash 之外正确检测鼠标悬停的一种方法(尽管使用 Flex):

var sbroot:DisplayObject = Application.application.systemManager.getSandboxRoot();
sbroot.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, handleDragComplete);
于 2010-05-31T17:08:32.550 回答
1

我有一个类似的问题。我的解决方案:

在可拖动对象构造函数中,我有:

addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);

在 onStartDrag() 我放了:

stage.addEventListener(MouseEvent.MOUSE_MOVE,onDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, onDrop);

每当鼠标移动时,在我们的 Flash 播放器外部,您都会收到通知,并且只要释放按钮,您就会收到 MOUSE_UP 通知,无论鼠标指针的位置如何。可能不适用于您的特定情况,但对我来说就像一种魅力。不要忘记在 onDrop() 中删除 MOVE 和 UP 侦听器。

于 2010-06-01T12:22:00.553 回答
0

对于鼠标离开工作区的情况,请尝试:MouseEvent.MOUSE_OUT

您可能能够检测MOUSE_UP到鼠标被拖回的情况。

鼠标在 Flash 应用程序之外的行为完全取决于操作系统和浏览器,并且您在 Flash 中对其进行的任何访问充其量都是不一致的。

于 2010-05-31T14:30:21.247 回答