Flash:点击并拖动(向下和向下移动)后跟踪鼠标位置,甚至在舞台/浏览器之外?

时间:2011-02-17 17:02:36

标签: javascript flash actionscript mouse position

当有人拥有:

时,从Adobe Flash跟踪鼠标位置的正确方法是什么?
  1. 在Flash应用程序(MOUSE_DOWN事件)中开始拖动,
  2. 将鼠标拖到应用程序甚至浏览器窗口(MOUSE_MOVE事件)之后,
  3. 发布了鼠标按钮(MOUSE_UP事件)?
  4. 例如(想象Stack Overflow是一个Flash应用程序):

    enter image description here

    在应用程序中,我可以使用MOUSE_MOVE事件监听器跟踪鼠标X和Y位置,但是当它超出浏览器时我会丢失它...

    那么,如何跟踪鼠标的位置,无论它在哪里?

    举个好例子,试试Google Finance。尝试拖动图表;如果将鼠标移出浏览器窗口,它仍会拖动,当您释放鼠标时,鼠标将位于浏览器之外。

    另外,请查看KOKO KAKA;如果单击滚动条(使浏览器窗口非常小)并移动到浏览器窗口之外,滚动条就会像真实的那样移动。

    我认为两者都有效,因为MOUSE_DOWN事件“捕获”鼠标,允许Flash应用程序跟踪鼠标的位置,即使它位于浏览器之外。

    你怎么能像这样保持事件被解雇?

    谢谢! ♥

2 个答案:

答案 0 :(得分:2)

使用MouseEvent.MOUSE_MOVE事件可以实现。将此代码放在fla的第一帧上,动态TextField在舞台上具有实例名称“output”。

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和浏览器中对此进行了测试。

答案 1 :(得分:0)

你不能 - 你可以使用MOUSE_LEAVE监听器在它离开你的flash区域时获取,但当你的鼠标在浏览器视口之外时你不能通过JavaScript或Flash获得鼠标位置(甚至不是工具栏,状态栏等)。