Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > alexcon314

Оценить эту запись

Работа с окнами в Adobe AIR

Запись от alexcon314 размещена 19.04.2011 в 08:13

Автор: DarkLight

Базовые сведения, настройка основного окна приложения.

Одной из важнейших возможностей Adobe AIR является работа с окнами. Неслучайно во Flex AIR-приложения основываются на компоненте WindowedApplication: возможности среды исполнения в этой области достаточно широки: есть возможность создавать их в количестве, ограниченном лишь ресурсами системы, управлять их размерами и расположением, использовать как стандартные окна операционной системы, так и окна нестандартной формы с использованием прозрачности. Итак, обо всем по порядку.

Внешний вид основного окна приложения задается в .xml-файле описания приложения, а именно – в теге initialWindow.
1)systemChrome – standart создает окно с стандартной рамкой операционной системы и кнопками закрытия, свертывания, разворота на весь экран. none – создает приложение без рамки. В этом случае разработчик должен обеспечивать все возможности по работе пользователя с окном самостоятельно. Правда, в случае с Flex установка none приводит к тому, что отображаются кнопки управления окном WindowedApplication, то есть уже ничего делать не надо. Во Flash же такого по понятным причинам не происходит, и нужно все делать вручную.
2)transparent – значение true допустимо только при условии, что systemChrome установлен в none. Установка этого параметра в true обозначает, что полупрозрачные объекты будут действительно полупрозрачными, а области без объектов или полностью прозрачные будут восприниматься как отсутствие графики. Важно понять то, что полностью область с полностью прозрачный объектом уже не будет реагировать на события мыши.
3)visible – видимость основного окна приложения после запуска. В случае, если выбрано false, окно станет видимым только после вызова метода activate() окна, либо установки его свойства visible в true. В случае AIR-приложений во Flex окно принудительно активируется, поэтому этот параметр ни на что не влияет.



Другие настройки, по умолчанию закомментированые, являются опциональными:
minimizable, maximasable, resizeable – устанавливают, имеет ли пользователь право минимизировать окно, разворачивать его на весь экран и перемещать, соответственно. В случае невозможности свертывания/развертывания соответствующая кнопка на системном окне/на WindowedApplication становится неактивной.
width, height, x, y – линейные размеры и позиция окна относительно левого верхнего угла экрана. Если задан размер больше допускаемого ОС, то он будет приравнен к последнему. Кроме того, пределы значений ограничиваются параметрами minSize, maxSize.
minSize, maxSize – минимальный и максимальный размер окна приложения соответственно, задаются как пара целочисленных значений, разделенных пробелом. В том случае, если maxSize меньше размеров экрана, а окно максимизируется, то оно будет переставлено в левый верхний угол экрана, при наличии скругления в стиле winXP углы рамки станут прямыми.

systemChrome и transparent задаются для окна раз и навсегда, и изменить их в процессе работы невозможно. width, height, x, y, minSize и maxSize моментально влияют на размер и расположение окна. При этом не надо забывать, что обращение должно происходить к stage.nativeWindow (Flash) или к свойству nativeWindow (Flex) приложения. Изменение maxHeight и maxWidth в WindowedApplication изменит размеры контента, но не самого окна, его содержащего. В коде minSize и maxSize являются объектами Point, т е задать их можно так:
Код:
this.nativeWindow.minSize = new Point(300,200);//Flex

this.stage.nativeWindow.minSize = new Point(300,200);//Flash
Также кодом можно изменить текст заголовка окна (свойство title).

А что делать Flash-разработчику, который хочет создать собственное уникальное окно с нуля? А собственно, никаких проблем. Задаем окно с systemChrome=none и, при желании, с transparent=true (в настройках публикации AIR в меню Commands). Кнопки закрытия, свертывания и развертывания при нажатии должны вызывать методы close(), minimize(), maximize()/restore() окна соответственно. С перемещением и и масштабированием еще проще: при нажатии в зону, где они должны работать, достаточно вызвать методы startMove() или startResize() окна соответственно, далее этим процессом занимается система. Перерисовка окна производится с частотой фреймрейта, поэтому на 12 fps, которые выставлены по умолчанию, процесс изменения размера выглядит некрасиво. Поэтому частоту смены кадров следует увеличить до стандартных в настоящее время 31 fps, а можно и больше. Для выбора направления изменения размеров при вызове startResize как аргумент следует передать одну из 8 констант класса NativeWindowResize (можно выбрать в качестве направления один из углов или одну из сторон окна).

В процессе изменения размеров/положения окна в результате вызова методов генерируются события move и resize соответственно, которые являются отменяемыми, что дает возможность не позволить юзеру выполнить конкретную операцию. А непосредственно перед стартом этих процессов генерируются события moving и resizing, что дает возможность при необходимости запретить юзеру производить изменения. Процессы минимизации/максимизации окна асинхронны, чтобы отловить момент их окончания, нужно подписаться на событие displayStateChange окна.

В следующей части – рассказ о работе с многооконными приложениями.

[из реорганизованного раздела Flash Приложения: AIR, Zinc и тд.]
Всего комментариев 0

Комментарии

 

 


Часовой пояс GMT +4, время: 08:56.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.