Перетаскивание окна приложения AIR вокруг экрана - PullRequest
1 голос
/ 31 июля 2011

У меня есть приложение 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(); 

не работает.

Возможно, мое решение не совсем подходит для этого. Есть ли лучшие решения?

Chris

1 Ответ

2 голосов
/ 31 июля 2011

вот что я сделал в моем приложении:

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

щелкните (+ перетащите) на этой HGroup перетащите окно. duobleclick минимизирует это.

редактировать не делайте ваше приложение перетаскиваемым, это только запутает пользователя. и между прочим приоритет должен быть положительным, а не отрицательным - но также не связывайтесь с этим. поведение не ожидается ни для кого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...