在以下情况下,从 Adobe Flash 跟踪鼠标位置的正确方法是什么:
- 开始在 Flash 应用程序中拖动(MOUSE_DOWN 事件),
- 将鼠标拖到应用程序或什至浏览器窗口外(一个 MOUSE_MOVE 事件),并且
- 释放鼠标按钮(MOUSE_UP 事件)?
例如(假设 Stack Overflow 是一个 Flash 应用程序):
在应用程序中,我可以使用 MOUSE_MOVE 事件监听器跟踪鼠标的 X 和 Y 位置,但是当它离开浏览器时我会丢失它...
那么,无论鼠标走到哪里,我该如何跟踪鼠标的位置?
一个很好的例子,试试Google Finance .尝试拖动图表;如果您将鼠标移出浏览器窗口,它仍会四处拖动,而当您释放鼠标时,鼠标将在浏览器之外。
另外,查看 KOKO KAKA ;如果您单击滚动条(使浏览器窗口非常小)并移出浏览器窗口,滚动条将像真实滚动条一样移动。
我相信两者都有效,因为 MOUSE_DOWN 事件“捕获”了鼠标,允许 Flash 应用程序跟踪鼠标的位置,即使它在浏览器之外也是如此。
您如何才能像这样保持事件触发?
谢谢! ♥
最佳答案
这可以使用 MouseEvent.MOUSE_MOVE 事件。将这段代码放在 fla 的第一帧上,该 fla 具有一个实例名称为“output”的 Dynamic TextField,在舞台上。
import flash.events.MouseEvent;
stage.addEventListener( MouseEvent.MOUSE_DOWN, onMouseDownHandler );
stage.addEventListener( MouseEvent.MOUSE_UP, onMouseUpHandler );
function onMouseDownHandler ( evt : MouseEvent ) : void
{
outputText( "Mouse Down" );
stage.addEventListener( MouseEvent.MOUSE_MOVE, onMouseMoveHandler );
}
function onMouseUpHandler ( evt : MouseEvent ) : void
{
outputText( "Mouse Up" );
stage.removeEventListener( MouseEvent.MOUSE_MOVE, onMouseMoveHandler );
}
function onMouseMoveHandler ( evt : MouseEvent ) : void
{
outputText( "Mouse move" );
outputText( "Mouse Y: " + mouseY );
outputText( "Mouse X: " + mouseX );
}
function outputText ( outputString : String ) : void
{
output.appendText( "\n" + outputString );
}
单击并将鼠标拖出屏幕,您将看到移动事件被触发,您可以获取鼠标的 x 和 y 位置。我在独立的 swf 和浏览器中对此进行了测试。
关于javascript - Flash:即使在舞台/浏览器之外,也可以在单击并拖动(向下移动)后跟踪鼠标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032058/