Я пытаюсь реализовать очень простой способ выбора части экрана с помощью мыши.Рабочий процесс является стандартным для многих приложений - нажмите на начальную точку, переместите мышь и обновите прозрачный прямоугольник между нажатой первой точкой и текущей позицией мыши.Базовый код выглядит примерно так (за исключением графики, которая проста)
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" mouseDown="application1_mouseDownHandler(event)">
<fx:Script>
<![CDATA[
import spark.components.mediaClasses.VolumeBar;
private var _anchorPoint:Point = new Point();
private var _currentPoint:Point = new Point();
protected function application1_mouseDownHandler(event:MouseEvent):void
{
addEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove);
addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
_anchorPoint = new Point(event.stageX, event.stageY);
}
private function handleMouseMove(e:MouseEvent):void
{
_currentPoint.x = e.stageX;
_currentPoint.y = e.stageY;
trace("rectangle between (",_anchorPoint.x, ",", _anchorPoint.y, ") and (", _currentPoint.x, ",", _currentPoint.y, ").");
}
private function handleMouseUp(e:MouseEvent):void
{
removeEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove);
removeEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
}
]]>
</fx:Script>
</s:Application>
Это ломается, когда пользователь перемещает мышь за пределы приложения.Не только _currentPoint перестает обновляться, но и если вы отпустите кнопку мыши за пределами приложения, вы пропустите событие mouseUp, т. Е. Когда вы вернете мышь назад в приложение, _currentPoint снова начнет обновляться, как будто вы никогда не отпускали кнопку мыши,Мне было интересно, есть ли способ во Flex (для веб-приложений) обойти это, слушая события mouseMove и mouseUp, когда они находятся вне приложения (если это возможно) или любым другим способом, который может иметь смысл.
спасибо за помощь!