Taakbalkpictogrammen in AIR

Adobe AIR 1.0 of hoger

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.