Вспышка: отслеживание положения мыши после нажатия и перетаскивания (опускания и перемещения) даже вне сцены / браузера? - PullRequest
3 голосов
/ 17 февраля 2011

Как правильно отслеживать положение мыши из Adobe Flash, когда кто-то имеет:

  1. Запущено перетаскивание в приложении Flash (событие MOUSE_DOWN),
  2. Перетаскиваниемышь вне приложения или даже окна браузера (событие MOUSE_MOVE) и
  3. отпущена кнопка мыши (событие MOUSE_UP)?

Например (Представьте, что переполнение стека является приложением Flash):

enter image description here

В приложении я могу отслеживать позиции X и Y мыши с помощью прослушивателя событий MOUSE_MOVE, но я его теряюкогда он выходит за пределы браузера ...

Итак, как мне отследить положение мыши независимо от того, куда она идет?

В качестве хорошего примера попробуйте Google Finance.Попробуйте перетащить диаграмму вокруг;он все равно будет перемещаться, если вы переместите указатель мыши из окна браузера, и когда вы отпустите его, мышь будет находиться за пределами браузера.

Также, проверьте KOKO KAKA ;Если вы нажмете на полосу прокрутки (сделаете окно браузера очень маленьким) и выйдете за пределы окна браузера, полоса прокрутки будет двигаться так же, как реальная.

Я считаю, что оба работают только потому, что событие MOUSE_DOWN захватывает"мышь, позволяющая приложению Flash отслеживать положение мыши, даже если она находится за пределами браузера.

Как бы вы могли поддерживать событие таким образом?

Спасибо!♥

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Это возможно с помощью события MouseEvent.MOUSE_MOVE.Поместите этот код в первый кадр флага с помощью динамического текстового поля с именем экземпляра «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 );
}

Нажмите и перетащите мышь за пределы экрана, и вы увидите, что события перемещенияуволены, и вы можете получить х и у позиции мыши.Я проверил это в автономном SWF и в браузере.

0 голосов
/ 17 февраля 2011

вы не можете - вы можете использовать слушатель MOUSE_LEAVE, чтобы получить, когда он покидает вашу область флэш-памяти, но вы не можете получить положение мыши с помощью JavaScript или Flash, когда ваша мышь находится вне области просмотра браузера (даже не на панели инструментов, строка состояния и т. д.).

...