2011-07-31 100 views
1

我有一个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(); 

不起作用。

也许我的解决方案不是最适合实现这一目标的解决方案。有更好的解决方案吗?

克里斯

+0

我的意思是使用鼠标在屏幕上拖动AIR应用程序窗口。如果没有chrome应用程序(控制条不存在,那么)单击应用程序边框应该是拖动的起点。 – chrisiek

回答

2

这就是我在我的应用程序所做的:

<s:HGroup id="appTitleBar" 
    width="100%" height="35" 
    styleName="titleBar" 
    mouseDown="nativeWindow.startMove();" 
    doubleClickEnabled="true" 
    doubleClick="nativeWindow.minimize();" 
    contentBackgroundColor="#313131"/> 

点击(+拖动)这个HGroup将拖动窗口。 duobleclick会将其最小化。

编辑 不会让你的整个应用程序拖动这只会混淆用户。 和btw优先应该是积极的而不是消极的 - 但也不要惹这个。没有预料到任何人的行为。

+0

它看起来像一个不错的解决方案。感谢分享这个。 – chrisiek

相关问题