Viele Betriebssysteme bieten eine Taskleiste, wie etwa das Mac OS X-Dock, in der eine Anwendung durch ein Symbol dargestellt wird. Adobe® AIR® bietet mithilfe der
NativeApplication.nativeApplication.icon
-Eigenschaft eine Schnittstelle zur Interaktion mit Anwendungssymbolen in der Taskleiste.
Taskleisten-Symbole
AIR erstellt automatisch das
NativeApplication.nativeApplication.icon
-Objekt. Je nach Betriebssystem handelt es sich beim Objekttyp entweder um „DockIcon“ oder „SystemTrayIcon“. Mithilfe der
NativeApplication.supportsDockIcon
- und
NativeApplication.supportsSystemTrayIcon
-Eigenschaften können Sie feststellen, welche dieser InteractiveIcon-Unterklassen von AIR auf dem aktuellen Betriebssystem unterstützt wird. Die InteractiveIcon-Basisklasse bietet die Eigenschaften
width
,
height
und
bitmaps
, mit der Sie das für das Symbol verwendete Bild ändern können. Wenn Sie jedoch eine für „DockIcon“ oder „SystemTrayIcon“ spezifische Eigenschaft auf dem falschen Betriebssystem aufrufen, kommt es zu einem Laufzeitfehler.
Um das für ein Symbol verwendete Bild festzulegen oder zu ändern, erstellen Sie ein Array, das ein oder mehrere Bilder enthält, und weisen es der
NativeApplication.nativeApplication.icon.bitmaps
-Eigenschaft zu. Die Größe der Taskleisten-Symbole kann sich von Betriebssystem zu Betriebssystem unterscheiden. Eine Verschlechterung des Bildes aufgrund von Skalierung können Sie vermeiden, indem Sie Bilder in mehreren Größen zum
bitmaps
-Array hinzufügen. Wenn Sie mehrere Bilder hinzugefügt haben, wird von AIR automatisch die Größe ausgewählt, die der gegenwärtigen Anzeigegröße des Taskleisten-Symbols am nächsten kommt. Eine Skalierung wird nur bei Bedarf vorgenommen. Im folgenden Beispiel wird das Bild für ein Taskleisten-Symbol mit zwei Bildern festgelegt:
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
Um das Bild des Symbols zu ändern, weisen Sie der
bitmaps
-Eigenschaft ein Array zu, das das neue Bild oder die neuen Bilder enthält. Sie können das Symbol animieren, indem Sie das Bild auf ein
enterFrame
- oder
timer
-Ereignis hin ändern.
Weisen Sie der
bitmaps
-Eigenschaft ein leeres Array zu, um das Symbol unter Windows oder Linux aus dem Infobereich zu entfernen oder unter Mac OS X das Standarderscheinungsbild des Symbols wiederherzustellen:
NativeApplication.nativeApplication.icon.bitmaps = [];
Dock-Symbole
AIR unterstützt Dock-Symbole, wenn die
NativeApplication.supportsDockIcon
-Eigenschaft den Wert
true
hat. Die
NativeApplication.nativeApplication.icon
-Eigenschaft stellt das Anwendungssymbol im Dock dar (kein Fenster-Dock-Symbol).
Hinweis:
Unter Mac OS X wird das Ändern von Fenstersymbolen im Dock von AIR nicht unterstützt. Außerdem wirken sich die Änderungen an einem Anwendungssymbol im Dock nur aus, während die Anwendung ausgeführt wird; das normale Erscheinungsbild des Symbols wird wiederhergestellt, wenn die Anwendung beendet wird.
Dock-Symbolmenüs
Sie können dem standardmäßigen Dock-Menü Befehle hinzufügen, indem Sie ein NativeMenu-Objekt, das die Befehle enthält, erstellen und der
NativeApplication.nativeApplication.icon.menu
-Eigenschaft zuweisen. Elemente im Menü werden über den standardmäßigen Dock-Symbolmenüelementen angezeigt.
Springen des Dock-Symbols
Durch Aufrufen der
NativeApplication.nativeApplication.icon.bounce()
-Methode können Sie das Dock-Symbol zum Springen veranlassen. Wenn Sie den
bounce() priority
-Parameter auf „informational“ einstellen, springt das Symbol einmal. Wenn Sie es auf „critical“ einstellen, springt das Symbol, bis der Benutzer die Anwendung aktiviert. Konstanten für den
priority
-Parameter sind in der NotificationType-Klasse definiert:
Hinweis:
Ist die Anwendung bereits aktiv, springt das Symbol nicht.
Dock-Symbolereignisse
Wird auf das Dock-Symbol geklickt, löst das NativeApplication-Objekt ein
invoke
-Ereignis aus. Falls die Anwendung nicht ausgeführt wird, wird sie vom System gestartet. Andernfalls wird das
invoke
-Ereignis an die ausgeführte Anwendungsinstanz gesendet.
Infobereich-Symbole
AIR unterstützt Infobereich-Symbole, wenn
NativeApplication.supportsSystemTrayIcon
auf
true
eingestellt ist; gegenwärtig ist dies nur unter Windows und den meisten Linux-Distributionen der Fall. Unter Windows und Linux werden Infobereich-Symbole im Infobereich der Taskleiste angezeigt. Standardmäßig wird kein Symbol angezeigt. Um ein Symbol anzuzeigen, weisen Sie der
bitmaps
-Eigenschaft ein Array zu, das BitmapData-Objekte enthält: Um das Bild des Symbols zu ändern, weisen Sie der
bitmaps
-Eigenschaft ein Array zu, das die neuen Bilder enthält. Stellen Sie
bitmaps
auf
null
ein, um das Symbol zu entfernen.
Infobereich-Symbolmenüs
Sie können dem Infobereich-Symbol ein Menü hinzufügen, indem Sie ein NativeMenu-Objekt erstellen und es der
NativeApplication.nativeApplication.icon.menu
-Eigenschaft zuweisen (vom Betriebssystem wird kein Standardmenü bereitgestellt). Klicken Sie mit der rechten Maustaste auf das Symbol, um das Infobereich-Symbolmenü aufzurufen.
QuickInfos zu Infobereich-Symbolen
Fügen Sie einem Symbol eine QuickInfo hinzu, indem Sie die tooltip-Eigenschaft wie folgt einstellen:
NativeApplication.nativeApplication.icon.tooltip = "Application name";
Ereignisse von Infobereich-Symbolen
Das SystemTrayIcon-Objekt, auf das die NativeApplication.nativeApplication.icon-Eigenschaft verweist, löst ein „ScreenMouseEvent“ für
click
-,
mouseDown
-,
mouseUp
-,
rightClick
-,
rightMouseDown
- und
rightMouseUp
-Ereignisse aus. Mithilfe dieser Ereignisse und einem Symbolmenü können Sie Benutzern die Interaktion mit Ihrer Anwendung ermöglichen, wenn sie keine sichtbaren Fenster hat.
Beispiel: Erstellen einer Anwendung ohne Fenster
Im folgenden Beispiel wird eine AIR-Anwendung erstellt, die über ein Infobereich-Symbol, aber keine sichtbaren Fenster verfügt. (Die
visible
-Eigenschaft der Anwendung darf im Anwendungsdeskriptor nicht auf
true
gesetzt werden, andernfalls ist das Fenster beim Starten der Anwendung sichtbar.)
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];
}
}
}
Hinweis:
Wenn Sie mit der Flex WindowedApplication-Komponente arbeiten, müssen Sie das
visible
-Attribut des WindowedApplication-Tags auf
false
setzen. Dieses ersetzt die Einstellung im Anwendungsdeskriptor.
Hinweis:
Bei diesem Beispiel wird davon ausgegangen, dass es die Bilddateien
AIRApp_16.png
und
AIRApp_128.png
in einem
icons
-Unterverzeichnis der Anwendung gibt. (Beispieldateien für Symbole, die Sie in Ihren Projektordner kopieren können, sind im AIR SDK enthalten.)
Taskleisten-Symbole und -Schaltflächen für Fenster
Symboldarstellungen von Fenstern werden in der Regel im Fensterbereich einer Taskleiste oder eines Docks angezeigt, um Benutzern einen einfachen Zugriff auf Fenster im Hintergrund oder minimierte Fenster zu ermöglichen. Im Mac OS X-Dock wird sowohl ein Symbol für die Anwendung als auch ein Symbol für jedes minimierte Fenster angezeigt. In der Taskleiste von Microsoft Windows und Linux wird eine Schaltfläche angezeigt, die das Programmsymbol und den Programmnamen für jedes Fenster vom Typ „normal“ in der Anwendung enthält.
Hervorheben der Fensterschaltfläche in der Taskleiste
Wenn sich ein Fenster im Hintergrund befindet, können Sie den Benutzer informieren, dass im Zusammenhang mit diesem Fenster ein Ereignis aufgetreten ist. Unter Mac OS X können Sie den Benutzer durch ein Springen des Anwendungssymbols im Dock informieren (siehe
Springen des Dock-Symbols
). Unter Windows und Linux können Sie die Fensterschaltfläche in der Taskleiste hervorheben, indem Sie die
notifyUser()
-Methode der NativeWindow-Instanz aufrufen. Mit dem an die Methode übergebenen
type
-Parameter wird die Dringlichkeit der Benachrichtigung bestimmt:
-
NotificationType.CRITICAL
: Das Fenster-Symbol blinkt, bis der Benutzer das Fenster in den Vordergrund stellt.
-
NotificationType.INFORMATIONAL
: Das Fenster-Symbol wird durch Änderung der Farbe hervorgehoben.
Hinweis:
Unter Linux werden nur informative Benachrichtigungen unterstützt. Wenn Sie einen Wert des einen oder anderen Typs an die
notifyUser()
-Funktion übergeben, wird derselbe Effekt erzielt.
Mit der folgenden Anweisung wird die Schaltfläche eines Fensters in der Taskleiste hervorgehoben:
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
Wird die
NativeWindow.notifyUser()
-Methode unter einem Betriebssystem aufgerufen, dass die Benachrichtigung auf Fensterebene nicht unterstützt, hat dieser Aufruf keine Wirkung. Mithilfe der
NativeWindow.supportsNotification
-Eigenschaft können Sie feststellen, ob diese Art der Benachrichtigung unterstützt wird.
Erstellen von Fenstern ohne Schaltflächen oder Symbolen in der Taskleiste
Unter Windows werden Fenster, die mit den Typen
utility
oder
lightweight
erstellt wurden, nicht in der Taskleiste angezeigt. Unsichtbare Fenster werden ebenfalls nicht in der Taskleiste angezeigt.
Da das erste Fenster zwangsläufig den Typ
normal
aufweist, müssen Sie dieses erste Fenster schließen oder unsichtbar belassen, wenn Sie eine Anwendung erstellen möchten, deren Fenster nicht in der Taskleiste angezeigt werden. Um alle Fenster in der Anwendung zu schließen, ohne die Anwendung zu beenden, müssen Sie die
autoExit
-Eigenschaft des NativeApplication-Objekts auf
false
einstellen, bevor Sie das letzte Fenster schließen. Um zu verhindern, dass das erste Fenster jemals sichtbar wird, fügen Sie
<visible>false</visible>
zum
<initalWindow>
-Element der Anwendungsdeskriptordatei hinzu. Außerdem sollten Sie die
visible
-Eigenschaft nicht auf
true
einstellen oder die
activate()
-Methode des Fensters aufrufen.
Stellen Sie in neuen, von der Anwendung geöffneten Fenstern die
type
-Eigenschaft des NativeWindowInitOption-Objekts, das an den Fensterkonstruktor übergeben wird, auf
NativeWindowType.UTILITY
oder
NativeWindowType.LIGHTWEIGHT
ein.
Unter Mac OS X werden minimierte Fenster in der Dock-Taskleiste angezeigt. Sie können die Anzeige des minimierten Symbols vermeiden, indem Sie das Fenster nicht minimieren, sondern ausblenden. Im folgenden Beispiel wird auf ein
nativeWindowDisplayState
-Änderungsereignis gewartet; es wird abgebrochen, falls das Fenster minimiert wird. Stattdessen stellt die Prozedur die
visible
-Eigenschaft des Fensters auf
false
ein:
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
Wird ein Fenster im Mac OS X-Dock minimiert angezeigt, wenn Sie die
visible
-Eigenschaft auf
false
einstellen, dann wird das Dock-Symbol nicht entfernt. Ein Benutzer kann nach wie vor auf das Symbol klicken, um das Fenster wieder anzuzeigen.
|
|
|