Бесплатно скачать Adobe Flash Player
Flash Ripper RSS Readers

Adobe AIR: как поместить окно поверх остальных окон

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

Например, для того, чтобы установить окно поверх остальных, используется метод orderToFront(). Однако я наткнулся то ли на баг, то ли на фичу этого метода: если другое окно получило фокус от мыши, то ваше окно поверх остальных не всплывет. Хотя при этом активизируется: фокус получит и будет призывно подмигивать в панели задач.

Затем я нашел и способ обхода этой неприятности, используя свойство окна alwaysInFront, и уйдя от использования orderToFront(). Сначала окно переводится в состояние "поверх всех" (alwaysInFront = true), затем активизируется, и, если было минимизировано, то восстанавливается; затем возвращается в состояние "не поверх всех" (alwaysInFront = false). Вот что получилось:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:creationComplete>
flash.utils.setTimeout(activateWindow, 2000);
function activateWindow(): void
{
alwaysInFront = true;
nativeWindow.activate();
if(nativeWindow.displayState == NativeWindowDisplayState.MINIMIZED)
{
nativeWindow.restore();
}
alwaysInFront = false;
}
</mx:creationComplete>
</mx:WindowedApplication>

Таким образом, все работает! Но меня гложут сомнения: а что если я просто не умею это готовить? Если знаете ответ — подскажите, можно ли обойтись без хака с alwaysInFront = true?

Писал Rost, 14 Август 2008 17:17

Найдены баги:

а помоему это не баг эйра, а нормальное поведение WinXP (не знаю насчет висты) - она все окна, которые пытаются вылезти поверх остальных, не показывает, а заставляет моргать в таскбаре. чтобы пользователя не раздражать. и не очень то культурно такое поведение пресекать :)

whitered - 14 Август 2008 18:18

@whitered:

а помоему это не баг эйра, а нормальное поведение WinXP ... и не очень то культурно такое поведение пресекать :)

Есть такая версия. Адоби так и говорит: Adobe AIR не ограничивает разработчиков и поволяет ставить окнам alwaysInFront = true, но не забывайте, что надоедливые приложения просто окажутся в корзине. :-)

Но тут такая ситуация, что именно это поведение, с "полным" всплыванием окна наверх, является и логичным, и по идее должно радовать юзверя, а не раздражать.

Ситуация в деталях: приложение скачивает купленные юзером в онлайновом магазине mp3-файлы. Пользователь заходит в магазин (сайт), чтобы докупить еще музыки. После покупки у него на странице сайта появляется кнопка "Запустить даунлоадер", по нажатию на которую и запускается приложение. А если даунлоадер уже был запущен, то он должен: 1) Обновить свою очередь скачивания. 2) Показаться юзеру на глаза, мол, вот он я, обновился.

В принципе, для решения второго пункта мигания в панели задач могло бы и хватить. Но тут заказчиком было принято решение (и я с ним согласен), что приложение должно всплыть.

Рост - 14 Август 2008 18:49

Рост whitered прав, если все окна будут ставить свое окно поверх остальных это будет хана. Они должны мигнуть, иногда в редких (очень редких) случаях могут позволить себе пикнуть.

Nirth - 15 Август 2008 3:49

Nirth, ты считаешь, что в моей ситуации стоило ограничиться миганием в панели задач?

Рост - 15 Август 2008 13:31

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

2)Бывают еще редкие случаи, когда юзерь жмет Coomand+Q (Mac) / Alt + F4 и вместо окна которое он хотел закрыть, закрывается вслывашее, а потом ничего не понятно (у меня такие случаи часто происходили со старыми версиями аськи, там любили вслывающие окна).

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

Это все мелочи, но имхо по моему надо как миниум дать юзерю возможность выбрать хочет ли он чтобы приложение выставляло окна на показ или нет, я предпочитаю когда приложения сидят тихо пока я не сочту нужным обратить на них свое внимание.

nirth - 15 Август 2008 15:51



Это запись из категории 'Adobe AIR'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-38, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-26, Articles-26, AS3-57, Books-9, Business-3, Cairngorm-3, CI-1, Classes-10, Coding-31, Community-118, Components-19, Contests-30, conventions-1, Cool-Job-10, Debug-21, Design-28, Development-84, ecology-4, EMO-2, Events-17, Extensions-2, FAQ-9, FDS-1, Flash and html-8, Flash Player-38, Flash Updates-12, flash-on-devices-1, Flash-scene-1, flash10-4, FlashLite-2, Flex-49, Flex 2-80, flex4-3, flexcamp-2, Flickr-1, FMS-2, FPUG-61, frameworks-1, Games-20, Good Job!-44, HaXe-16, Health-2, Humor-11, Ideas-14, IV-1, JavaScript-2, Job-30, JSFL-8, Links-2, Linux-3, Maps-1, Math-8, Money-16, music-1, MXML-1, Open Source-16, Optimization-4, parenting-3, Patterns-2, Personalities-27, Philosophy-4, Politics-1, posters-1, Preloading-3, Productivity-10, PureMVC-11, Pv3d-1, Rafpug-5, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-9, Silverlight-7, Sound-3, sport-4, Strategy-122, Tamarin-2, Tools-113, Training-3, Trash-8, URAFPUG-14, Urgent-1, Usability-6, Video-6, VoIP-7, Wallop-1, Wishlist-3, XML-1, Архив всех записей (большой)

За последние месяцы:

Ноя 2008: Ноябрьская встреча RAFPUG 12 — для креативных, В продолжение темы флэш-блогов, весь Ноя

Окт 2008: Ура — вторая лицензия Alternativa3D уезжает в Киев!, Влещь на глагне III IIIIIII?, весь Окт

Сен 2008: Встречайте Open Source Flash Media Server — Mammoth, Срочно нужен толковый Flex-разработчик в Харькове (+Java), весь Сен

Авг 2008: Flex Gangsta Rap Video WTF Bro?, 27 сентября — встреча UAFPUG во Львове и плюшки от Adobe, весь Авг

Июл 2008: Тенденции среди работодателей: Adobe Flex, Adobe AIR, Silverlight, Спорт спасет красоту, которая спасет мир!, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)