我有一个AIR应用程序。应该用鼠标在屏幕上移动。为了实现这一点,我使用事件:在屏幕上拖动AIR应用程序窗口
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown, true,-2);
应该具有最低优先级相比例如那些应该滚动插入的元素被激活,点击等
我试图解决方案示出下面将事件优先级设置为-1,因为可能发生2个不同的事件,并且我的移动应用程序事件应该是最后一个要服务的应用程序,或者根本不应该服务。
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="200"
height="200"
applicationComplete="init()">
<fx:Script>
<![CDATA[
import mx.core.Window;
import mx.events.ScrollEvent;
private function init():void {
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown, true,-2);
}
private function onMouseDown(event:MouseEvent):void {
trace("clicked on stage "+event.currentTarget.toString());
if(event.currentTarget == stage){
trace("catched stage target");
this.nativeWindow.startMove();
event.stopImmediatePropagation();
}
}
function scrolledCanvasHandler(event:ScrollEvent){
trace("clicked on canvas "+event.currentTarget.toString());
event.stopPropagation();
}
]]>
</fx:Script>
<mx:Canvas x="29" y="34" width="80%" height="80%" backgroundColor="#343434" scroll="scrolledCanvasHandler(event)">
<mx:Label x="25" y="77" text="moving window, moving window"
fontSize="18" color="#FFFFFF" fontWeight="bold"/>
</mx:Canvas>
</s:WindowedApplication>
正如你会发现
event.stopPropagation();
不起作用。
也许我的解决方案不是最适合实现这一目标的解决方案。有更好的解决方案吗?
克里斯
我的意思是使用鼠标在屏幕上拖动AIR应用程序窗口。如果没有chrome应用程序(控制条不存在,那么)单击应用程序边框应该是拖动的起点。 – chrisiek