Flex 4: окно заголовка выходит за пределы доступной области - PullRequest
3 голосов
/ 02 июля 2011

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

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

Возможно, я не сформулировал это право, проверьте прикрепленное изображение image going out of screen.

Ответы [ 3 ]

4 голосов
/ 02 июля 2011

Если вы можете использовать пользовательский компонент, я бы предложил переопределить метод move () в TitleWindow. Я использую следующий код для ограничения движения окна:

public class PopUpWindow extends TitleWindow
{
    private static const MIN_VISIBLE:int = 50;

    public override function move(x:Number, y:Number):void
    {
        var maxX:Number = stage.stageWidth - MIN_VISIBLE;
        var maxY:Number = stage.stageHeight - MIN_VISIBLE;

        if (x < 0)
            x = 0;
        else if (x > maxX)
            x = maxX;

        if (y < 0)
            y = 0;
        else if (y > maxY)
            y = maxY;

        super.move(x, y);
    }
}
4 голосов
/ 02 июля 2011

Я бы слушал событие move в TitleWindow. Если окно перемещено за пределы видимых координат приложения, переместите его назад.

Если у вас есть проблема только с разрешением пользователям закрывать окно, тогда вы можете добавить кнопку «Закрыть» в нижней части окна в дополнение к «х» в верхней части.

1 голос
/ 29 октября 2012

Эта функция вызывается при событии перемещения окна заголовка:

        protected function titlewindow1_moveHandler(event:MoveEvent):void
        {
            // TODO Auto-generated method stub
            var window:UIComponent = event.currentTarget as UIComponent;
            var application:UIComponent = FlexGlobals.topLevelApplication as UIComponent;
            var bounds:Rectangle = new Rectangle(0, 0, application.width, application.height);
            var windowBounds:Rectangle = window.getBounds(application);
            var x:Number;
            var y:Number;
            if (windowBounds.left <= bounds.left)
                x = bounds.left;
            else if (windowBounds.right >= bounds.right)
                x = bounds.right - window.width;
            else
                x = window.x;
            if (windowBounds.top <= bounds.top)
                y = bounds.top;
            else if (windowBounds.bottom >= bounds.bottom)
                y = bounds.bottom - window.height;
            else
                y = window.y;
            window.move(x, y);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...