【发布时间】:2011-06-06 23:44:53
【问题描述】:
我正在尝试实现一种非常简单的方法来通过鼠标选择屏幕的一部分。该工作流程是许多应用程序的标准工作流程 - 单击起点、移动鼠标以及在单击的第一个点和鼠标的当前位置之间更新透明矩形。基本代码看起来像这样(减去图形,很简单)
<?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 事件或任何其他可能有意义的方式来解决此问题。
感谢您的帮助!
【问题讨论】:
标签: apache-flex flex4