Как сделать так, чтобы окно отображалось за пределами приложения? - PullRequest
1 голос
/ 24 ноября 2008

В нашем приложении Flex AIR у нас проблема в том, что наше главное окно приложения довольно узкое. Это означает, что диалоговые окна оповещений обрезаны с обеих сторон, а меню правой кнопки мыши обрезано. Как мы можем заставить эти окна не обрезаться нашим главным окном?

Ответы [ 4 ]

2 голосов
/ 24 января 2009

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

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

Как только вы перейдете к подходу с невидимым окном, вы сможете достичь поведения окон, которое похоже на поведение нативных приложений.

1 голос
/ 10 декабря 2008

Как вы показываете оповещения? Если вы используете Alert.show (), он будет использовать ширину по умолчанию. Однако вы можете обойти это, создав объект оповещения, задав ширину вручную (или даже динамически), а затем используя PopUpManager, чтобы отобразить его, поместить в нужное место и скрыть. Это займет немного больше кода, но дает вам гораздо больше гибкости.

Вот небольшой образец:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
    creationComplete="creationCompleteHandler();">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.managers.PopUpManager;

            private function creationCompleteHandler():void
            {
                var alert:Alert = new Alert();

                alert.width = 100;

                alert.text = "this Alert is\n100px wide";

                PopUpManager.addPopUp(alert, this);

                PopUpManager.centerPopUp(alert);

                Alert.show("this Alert uses the default width");
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>
0 голосов
/ 26 января 2009

Я считаю, что расширения Dojo для Adobe Air должны быть в состоянии делать то, что вы после. Никогда не использовал его сам и не уверен, каков будет компромисс, но на него стоит посмотреть.

http://sitepen.com/labs/dair/

0 голосов
/ 25 ноября 2008

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

Хотя вы можете использовать мост flex / ajax и вызвать вместо этого окно предупреждения javascript, они не будут привязаны к сцене. Но он не будет обработан как вся остальная часть приложения, и потребует больше усилий, чтобы его подключить, особенно если вы слушаете, как пользователь нажимает кнопку «ОК» ...

...