当有人拥有:
时,从Adobe Flash跟踪鼠标位置的正确方法是什么?例如(想象Stack Overflow是一个Flash应用程序):
在应用程序中,我可以使用MOUSE_MOVE事件监听器跟踪鼠标X和Y位置,但是当它超出浏览器时我会丢失它...
那么,如何跟踪鼠标的位置,无论它在哪里?
举个好例子,试试Google Finance。尝试拖动图表;如果将鼠标移出浏览器窗口,它仍会拖动,当您释放鼠标时,鼠标将位于浏览器之外。
另外,请查看KOKO KAKA;如果单击滚动条(使浏览器窗口非常小)并移动到浏览器窗口之外,滚动条就会像真实的那样移动。
我认为两者都有效,因为MOUSE_DOWN事件“捕获”鼠标,允许Flash应用程序跟踪鼠标的位置,即使它位于浏览器之外。
你怎么能像这样保持事件被解雇?
谢谢! ♥
答案 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获得鼠标位置(甚至不是工具栏,状态栏等)。