Многие операционные системы имеют панель задач, например док Mac OS X, на которой может отображаться значок приложения. Adobe® AIR® предоставляет интерфейс для взаимодействия со значком приложения на панели задач через свойство
NativeApplication.nativeApplication.icon
.
О значках панели задач
AIR создает объект
NativeApplication.nativeApplication.icon
автоматически. Объект имеет тип DockIcon или SystemTrayIcon в зависимости от операционной системы. Определить, какой из этих подклассов InteractiveIcon поддерживается AIR в данной операционной системе, можно при помощи свойств
NativeApplication.supportsDockIcon
и
NativeApplication.supportsSystemTrayIcon
. Базовый класс InteractiveIcon содержит свойства
width
,
height
и
bitmaps
, при помощи которых можно изменить изображение значка. Однако при попытке получить доступ к свойствам DockIcon или SystemTrayIcon не в той операционной системе возникает ошибка времени выполнения.
Для установки или изменения изображения значка создайте массив, содержащий одно или несколько изображений, и присвойте его свойству
NativeApplication.nativeApplication.icon.bitmaps
. Размер значков панели задач может отличаться в зависимости от операционной системы. Во избежание снижения качества изображения из-за масштабирования можно добавить в массив
bitmaps
несколько размеров изображения. При наличии нескольких изображений AIR выбирает размер, ближайший к текущему размеру отображения значка панели задач, применяя масштабирование лишь при необходимости. Следующий пример кода задает изображение для значка панели задач, выбирая из двух изображений:
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
Для изменения изображения значка присвойте массив, содержащий новое изображение или изображения, свойству
bitmaps
. Можно анимировать значок, изменив изображение в ответ на событие
enterFrame
или
timer
.
Чтобы удалить значок из области уведомления в Windows и Linux или восстановить вид значка по умолчанию в Mac OS X, задайте для
bitmaps
пустой массив.
NativeApplication.nativeApplication.icon.bitmaps = [];
Значки дока
AIR поддерживает значки дока, если
NativeApplication.supportsDockIcon
имеет значение
true
. Свойство
NativeApplication.nativeApplication.icon
представляет значок приложения в доке (а не значок дока окна).
Примечание.
AIR не поддерживает изменение значков окна в доке в операционной системе Mac OS X. Кроме того, изменения значка приложения в доке применяются только на время выполнения приложения — при завершении работы приложения значок принимает свой обычный вид.
Меню значков дока
В стандартное меню дока можно добавить команды, создав объект NativeMenu, содержащий эти команды, и присвоив его свойству
NativeApplication.nativeApplication.icon.menu
. Добавленные пункты меню отображаются поверх стандартных пунктов меню значков дока.
Оповещения дока
Подпрыгивание значка дока достигается при помощи метода
NativeApplication.nativeApplication.icon.bounce()
. Если для параметра
bounce() priority
задано значение informational, значок прыгает один раз. Если для него задано значение critical, значок прыгает до тех пор, пока пользователь не активирует приложение. Константы для параметра
priority
определены в классе NotificationType.
Примечание.
Значок не прыгает, если приложение уже активно.
События значков дока
При нажатии на значок дока объект NativeApplication отправляет событие
invoke
. Если приложение еще не запущено, система запускает его. В противном случае событие
invoke
отправляется экземпляру выполняющегося приложения.
Значки области уведомлений
AIR поддерживает значки области уведомлений, если для свойства
NativeApplication.supportsSystemTrayIcon
задано значение
true
, что справедливо в настоящее время только для Windows и большинства дистрибутивов Linux. В Windows и Linux значки области уведомлений отображаются в области уведомлений панели задач. По умолчанию не отображается ни один значок. Для отображения значка присвойте массив, содержащий объекты BitmapData, свойству
bitmaps
значка. Для изменения изображения значка присвойте массив, содержащий новые изображения, свойству
bitmaps
. Для удаления значка задайте для
bitmaps
значение
null
.
Меню значков области уведомлений
Можно добавить меню к значку области уведомлений, создав объект NativeMenu и присвоив его свойству
NativeApplication.nativeApplication.icon.menu
(операционная система не предоставляет меню по умолчанию). Доступ к меню значка области уведомлений осуществляется щелчком правой кнопки мыши.
Всплывающие подсказки значков области уведомлений
Можно добавить к значку всплывающую подсказку, задав свойство tooltip:
NativeApplication.nativeApplication.icon.tooltip = "Application name";
События значков области уведомлений
Объект SystemTrayIcon, на который указывает свойство NativeApplication.nativeApplication.icon, отправляет ScreenMouseEvent для событий
click
,
mouseDown
,
mouseUp
,
rightClick
,
rightMouseDown
и
rightMouseUp
. Эти события, а также меню значков, позволяют пользователям взаимодействовать с приложением при отсутствии его видимых окон.
Пример: создание приложения без окон
Следующий пример создает приложение AIR, которое имеет значки в области уведомлений, но не имеет видимых окон. (Для свойства
visible
приложения не должно быть установлено значение
true
в дескрипторе приложения; в противном случае окно будет видимо при запуске приложения.)
package
{
import flash.display.Loader;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.display.Sprite;
import flash.desktop.DockIcon;
import flash.desktop.SystemTrayIcon;
import flash.events.Event;
import flash.net.URLRequest;
import flash.desktop.NativeApplication;
public class SysTrayApp extends Sprite
{
public function SysTrayApp():void{
NativeApplication.nativeApplication.autoExit = false;
var icon:Loader = new Loader();
var iconMenu:NativeMenu = new NativeMenu();
var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit"));
exitCommand.addEventListener(Event.SELECT, function(event:Event):void {
NativeApplication.nativeApplication.icon.bitmaps = [];
NativeApplication.nativeApplication.exit();
});
if (NativeApplication.supportsSystemTrayIcon) {
NativeApplication.nativeApplication.autoExit = false;
icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_16.png"));
var systray:SystemTrayIcon =
NativeApplication.nativeApplication.icon as SystemTrayIcon;
systray.tooltip = "AIR application";
systray.menu = iconMenu;
}
if (NativeApplication.supportsDockIcon){
icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_128.png"));
var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
dock.menu = iconMenu;
}
}
private function iconLoadComplete(event:Event):void
{
NativeApplication.nativeApplication.icon.bitmaps =
[event.target.content.bitmapData];
}
}
}
Примечание.
При использовании компонента Flex WindowedApplication необходимо задать для атрибута
visible
тега WindowedApplication значение
false
. Этот атрибут заменяет настройку в дескрипторе приложения.
Примечание.
Этот пример предполагает использование файлов изображений с именами
AIRApp_16.png
и
AIRApp_128.png
в подкаталоге
icons
приложения. (Файлы с образцами значков, которые можно копировать в папку проекта, включены в пакет AIR SDK.)
Кнопки и значки окон на панели задач
Значки окон, как правило, отображаются на панели задач в области отображения ярлыков открытых окон, или доке, чтобы пользователи могли легко получить доступ к окнам фонового режима или свернутым окнам. Док операционной системы Mac OS X отображает значок приложения, а также значки свернутых окон. На панелях задач в Microsoft Windows и Linux отображаются кнопка со значком программы и заголовки для каждого окна обычного типа в приложении.
Подсветка кнопок окон на панели задач
Если окно открыто в фоновом режиме, можно уведомить пользователя о том, что произошло ожидаемое событие, связанное с окном. В Mac OS X оповещение пользователя может осуществляться за счет прыгающего значка приложения в доке (как описано в разделе
Оповещения дока
). В Windows и Linux можно подсветить кнопку окна на панели задач, вызвав метод
notifyUser()
экземпляра NativeWindow. Параметр
type
, передаваемый этому методу, определяет срочность оповещения:
-
NotificationType.CRITICAL
: значок окна мигает до тех пор, пока пользователь не активирует окно.
-
NotificationType.INFORMATIONAL
: значок окна подсвечивается, изменяя цвет.
Примечание.
В Linux поддерживается только информационный тип уведомлений. Передача значения любого типа в функцию
notifyUser()
создаст точно такой же эффект.
Следующее выражение подсвечивает кнопку окна на панели задач:
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
Вызов метода
NativeWindow.notifyUser()
в операционной системе, не поддерживающей оповещение на уровне окон, не действует. При помощи свойства
NativeWindow.supportsNotification
можно определить, поддерживается ли оповещение на уровне окон.
Создание окон без кнопок или значков на панели задач
В операционной системе Windows окна типов
utility
или
lightweight
не отображаются на панели задач. Невидимые окна также не отображаются на панели задач.
Поскольку начальное окно всегда относится к типу
normal
, для создания приложения, окна которого не должны отображаться на панели задач, необходимо либо закрыть исходное окно, либо сделать его невидимым. Чтобы закрыть все окна приложения, не завершая работу самого приложения, задайте для свойства
autoExit
объекта NativeApplication значение
false
перед закрытием последнего окна. Чтобы сделать начальное окно постоянно невидимым, вставьте
<visible>false</visible>
в элемент
<initalWindow>
файла дескриптора приложения (не задавайте для свойства
visible
значение
true
и не вызывайте метод
activate()
окна).
Для новых окон, открытых в приложении, установите свойство
type
объекта NativeWindowInitOption, передаваемого конструктору окна, на значение
NativeWindowType.UTILITY
или
NativeWindowType.LIGHTWEIGHT
.
В Mac OS X свернутые окна отображаются на панели задач дока. Чтобы значок свернутого окна не отображался, рекомендуется скрыть окно, а не сворачивать его. Следующий пример прослушивает событие изменения
nativeWindowDisplayState
и отменяет его при сворачивании окна. Вместо этого обработчик задает для свойства
visible
значение
false
:
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
При сворачивании окна в док Mac OS X при установке свойства
visible
на значение
false
значок дока не удаляется. Пользователь может щелкнуть значок, чтобы снова отобразить окно.
|
|
|