Veel besturingssystemen hebben een taakbalk, zoals het dock van Mac OS X, dat pictogrammen (in Mac OS 'symbolen') kan bevatten die toepassingen vertegenwoordigen. Adobe® AIR® biedt een interface voor interactie met het taakbalkpictogram van een toepassing via de eigenschap
NativeApplication.nativeApplication.icon
.
Informatie over taakbalkpictogrammen
AIR maakt automatisch het object
NativeApplication.nativeApplication.icon
. Het objecttype is DockIcon of SystemTrayIcon, afhankelijk van het besturingssysteem. U kunt bepalen welke van deze InteractiveIcon-subklassen AIR in het huidige besturingssysteem ondersteunt met behulp van de eigenschappen
NativeApplication.supportsDockIcon
en
NativeApplication.supportsSystemTrayIcon
. De basisklasse InteractiveIcon biedt de eigenschappen
width
,
height
en
bitmaps
, die u kunt gebruiken om de afbeelding voor het pictogram te wijzigen. Als u echter eigenschappen die specifiek zijn voor DockIcon of SystemTrayIcon in het verkeerde besturingssysteem opvraagt, wordt er een runtimefout gegenereerd.
Als u de afbeelding die voor een pictogram wordt gebruikt, wilt instellen of wijzigen, maakt u een array met een of meer afbeeldingen en wijst u deze toe aan de eigenschap
NativeApplication.nativeApplication.icon.bitmaps
. De grootte van taakbalkpictogrammen kan per besturingssysteem verschillen. Als u wilt voorkomen dat de kwaliteit van de pictogramafbeelding vermindert door het wijzigen van het formaat, voegt u afbeeldingen in verschillende formaten toe aan de array
bitmaps
. Als u meer dan één afbeelding aanbiedt, selecteert AIR automatisch het formaat dat het dichtst bij de huidige weergavegrootte van het taakbalkpictogram komt, en wordt het formaat van de afbeelding alleen aangepast als dat noodzakelijk is. In het volgende voorbeeld ziet u hoe u de afbeelding voor een taakbalkpictogram instelt met twee afbeeldingen:
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
Als u de pictogramafbeelding wilt wijzigen, wijst u een array met de nieuwe afbeelding(en) toe aan de eigenschap
bitmaps
. U kunt animatie aan het pictogram toevoegen door de afbeelding te wijzigen als reactie op de gebeurtenis
enterFrame
of
timer
.
Als u het pictogram uit het systeemvak in Windows of Linux wilt verwijderen, of de standaardweergave van het pictogram wilt herstellen in Mac OS X, stelt u
bitmaps
in op een lege array:
NativeApplication.nativeApplication.icon.bitmaps = [];
Dock-pictogrammen
AIR ondersteunt pictogrammen in het dock wanneer
NativeApplication.supportsDockIcon
is ingesteld op
true
. De eigenschap
NativeApplication.nativeApplication.icon
vertegenwoordigt het toepassingspictogram in het dock (geen vensterpictogram in het dock).
Opmerking:
AIR biedt geen ondersteuning voor veranderende vensterpictogrammen in het dock in Mac OS X. Ook zijn wijzigingen in het dock-pictogram voor een toepassing alleen van kracht op het moment dat de toepassing wordt uitgevoerd en krijgt het pictogram weer zijn normale uiterlijk wanneer de toepassing wordt afgesloten.
Menu's van pictogrammen in het dock
U kunt opdrachten toevoegen aan het standaardmenu van een dock door een NativeMenu-object met deze opdrachten te maken en dit object vervolgens toe te wijzen aan de eigenschap
NativeApplication.nativeApplication.icon.menu
. De items in het menu worden boven de standaarditems in het dock-menu weergegeven.
Het pictogram in het dock laten bewegen
U kunt een pictogram in het dock laten bewegen door de methode
NativeApplication.nativeApplication.icon.bounce()
op te roepen. Als u de parameter
bounce() priority
instelt op informational (informatief), beweegt het pictogram één keer. Als u deze parameter instelt op critical (kritiek), beweegt het pictogram totdat de gebruiker de toepassing activeert. Constanten voor de parameter
priority
worden gedefineerd in de klasse NotificationType.
Opmerking:
Het pictogram beweegt niet als de toepassing al actief is.
Gebeurtenissen van pictogrammen in het dock
Wanneer op een dock-pictogram wordt geklikt, verzendt het NativeApplication-object de gebeurtenis
invoke
. Als de toepassing nog niet wordt uitgevoerd, wordt deze door het systeem gestart. Als de toepassing wel wordt uitgevoerd, wordt de gebeurtenis
invoke
verzonden naar de actieve toepassingsinstantie.
Systeemvakpictogrammen
AIR ondersteunt systeemvakpictogrammen wanneer
NativeApplication.supportsSystemTrayIcon
true
is. Dat is gewoonlijk het geval in Windows en de meeste Linux-distributies. In Windows en Linux worden systeemvakpictogrammen weergegeven in het systeemvak van de taakbalk. Er wordt standaard geen enkel pictogram weergegeven. Als u een pictogram wilt weergeven, wijst u een array met BitmapData-objecten toe aan de eigenschap
bitmaps
van het pictogram. Als u de pictogramafbeelding wilt wijzigen, wijst u een array met de nieuwe afbeeldingen toe aan de eigenschap
bitmaps
. Als u het pictogram wilt verwijderen, stelt u
bitmaps
in op
null
.
Menu's van systeemvakpictogrammen
U kunt een menu aan een systeemvakpictogram toevoegen door een NativeMenu-object te maken en dit object vervolgens aan de eigenschap
NativeApplication.nativeApplication.icon.menu
toe te wijzen (er is geen standaardmenu beschikbaar in het besturingssysteem). U kunt het menu van het systeemvakpictogram openen door met de rechtermuisknop op het pictogram te klikken.
Knopinfo van systeemvakpictogrammen
Voeg knopinfo toe aan een pictogram door de eigenschap voor knopinfo in te stellen:
NativeApplication.nativeApplication.icon.tooltip = "Application name";
Gebeurtenissen van systeemvakpictogrammen
Het object SystemTrayIcon waarnaar wordt verwezen met de eigenschap NativeApplication.nativeApplication.icon, verzendt een ScreenMouseEvent voor de gebeurtenissen
click
,
mouseDown
,
mouseUp
,
rightClick
,
rightMouseDown
en
rightMouseUp
. U kunt deze gebeurtenissen samen met een pictogrammenu gebruiken om gebruikers in staat te stellen met uw toepassing te interageren wanneer deze geen zichtbare vensters heeft.
Voorbeeld: een toepassing maken zonder vensters
In het volgende voorbeeld wordt een AIR-toepassing gemaakt met een systeemvakpictogram maar zonder zichtbare vensters. (De eigenschap
visible
van de toepassing mag niet zijn ingesteld op
true
in de toepassingsdescriptor. Als dit wel het geval is, zal het venster zichtbaar zijn wanneer de toepassing wordt opgestart.)
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];
}
}
}
Opmerking:
Als de Flex-component WindowedApplication wordt gebruikt, moet u het kenmerk
visible
van de tag WindowedApplication instellen op
false
. Dit kenmerk heeft voorrang op de instellingen in de toepassingsdescriptor.
Opmerking:
In het voorbeeld wordt aangenomen dat er afbeeldingsbestanden aanwezig zijn met de naam
AIRApp_16.png
en
AIRApp_128.png
in de submap
icons
van de toepassing. (In de SDK van AIR vindt u voorbeeldpictogrambestanden, die u naar uw eigen projectmap kunt kopiëren.)
Taakbalkpictogrammen en -knoppen voor vensters
In een speciaal gebied van de taakbalk of het dock worden gewoonlijk pictogrammen of knoppen weergegeven die vensters vertegenwoordigen en waarmee gebruikers gemakkelijk toegang kunnen krijgen tot vensters die zich op de achtergrond bevinden of zijn geminimaliseerd. In het dock van Mac OS X wordt een pictogram weergegeven voor een toepassing, maar ook een pictogram voor elk geminimaliseerd venster. Op de taakbalken van Microsoft Windows en Linux wordt een knop weergegeven met het programmapictogram en de titel van elk gewoon venster in de toepassing.
De taakbalkknop voor een venster markeren
Wanneer een venster zich op de achtergrond bevindt, kunt u de gebruiker waarschuwen wanneer betreffende dat venster een gebeurtenis plaatsvindt die van belang is voor de gebruiker. In Mac OS X kunt u de gebruiker waarschuwen door het toepassingspictogram in het dock te laten bewegen (zoals is beschreven in
Het pictogram in het dock laten bewegen
). In Windows en Linux kunt u de taakbalkknop van het venster markeren door de methode
notifyUser()
van het NativeWindow-exemplaar aan te roepen. De parameter
type
die aan de methode wordt doorgegeven, bepaalt de urgentie van de waarschuwing:
-
NotificationType.CRITICAL
: het pictogram van het venster knippert totdat de gebruiker het venster op de voorgrond plaatst.
-
NotificationType.INFORMATIONAL
: het pictogram van het venster wordt gemarkeerd door een kleurwijziging.
Opmerking:
In Linux wordt alleen de melding van het informatieve type ondersteund. Wanneer u een waarde van een van deze typen aan de functie
notifyUser()
doorgeeft, leidt dit tot hetzelfde effect.
Met de volgende instructie zorgt u dat de taakbalkknop van een venster wordt gemarkeerd:
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
De methode
NativeWindow.notifyUser()
heeft alleen effect als u deze methode oproept in een besturingssysteem dat waarschuwingen op vensterniveau ondersteunt. Gebruik de eigenschap
NativeWindow.supportsNotification
om te controleren of vensterwaarschuwingen worden ondersteund.
Vensters zonder taakbalkknoppen of -pictogrammen maken
In Windows worden vensters van het type
utility
of
lightweight
niet op de taakbalk weergegeven. Ook onzichtbare vensters verschijnen niet op de taakbalk.
Omdat het beginvenster noodzakelijkerwijs van het type
normal
is, moet u dit beginvenster sluiten of zorgen dat het onzichtbaar blijft als u een toepassing wilt maken waarvan de vensters niet als knop op de taakbalk worden weergegeven. Als u alle vensters van uw toepassing wilt sluiten zonder de toepassing af te sluiten, stelt u de eigenschap
autoExit
van het object NativeApplication in op
false
voordat u het laatste venster sluit. Als u eenvoudig wilt voorkomen dat het beginvenster ooit zichtbaar wordt, voegt u
<visible>false</visible>
toe aan het element
<initialWindow>
van het descriptorbestand van de toepassing. (Stel de eigenschap
visible
niet in op
true
en roep ook niet de methode
activate()
van het venster op.)
Stel voor nieuwe vensters die door de toepassing worden geopend, de eigenschap
type
van het object NativeWindowInitOption dat wordt doorgegeven aan de vensterconstructor, in op
NativeWindowType.UTILITY
of
NativeWindowType.LIGHTWEIGHT
.
In Mac OS X worden geminimaliseerde vensters weergegeven op de dock-taakbalk. U kunt voorkomen dat het pictogram van een geminimaliseerd venster wordt weergegeven door het venster te verbergen in plaats van te minimaliseren. In het volgende voorbeeld wordt geluisterd naar een gebeurtenis die
nativeWindowDisplayState
verandert en wordt deze gebeurtenis geannuleerd als het venster wordt geminimaliseerd. In plaats daarvan stelt de handler de eigenschap
visible
van het venster in op
false
:
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
Als een venster wordt geminimaliseerd in het dock van Mac OS X wanneer u de eigenschap
visible
op
false
instelt, wordt het pictogram niet uit het dock verwijderd. Een gebruiker kan in dat geval nog steeds op het pictogram klikken om het venster opnieuw weer te geven.
|
|
|