2011-07-31 133 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

相關問題