Aktivitetsfältsikoner i AIR

Adobe AIR 1.0 och senare

I många operativsystem finns ett aktivitetsfält (till exempel Dock i Mac OS X) som kan innehålla en ikon som representerar ett program. I Adobe® AIR® finns ett gränssnitt för att interagera med programikoner i aktivitetsfältet via egenskapen NativeApplication.nativeApplication.icon.

Om aktivitetsfältsikoner

I AIR skapas NativeApplication.nativeApplication.icon-objektet automatiskt. Objekttypen är antingen DockIcon eller SystemTrayIcon, beroende på operativsystemet. Du kan ta reda på vilka av dessa InteractiveIcon-underklasser som AIR stöder på det aktuella operativsystemet med hjälp av egenskaperna NativeApplication.supportsDockIcon och NativeApplication.supportsSystemTrayIcon. InteractiveIcon-basklassen innehåller egenskaperna width, height och bitmaps. Med dessa egenskaper kan du ändra bilden som används för ikonen. Om du använder egenskaper som är specifika för DockIcon eller SystemTrayIcon på fel operativsystem genereras dock ett körningsfel.

Om du vill välja en bild eller ändra bilden som används för en ikon skapar du en array som innehåller en eller flera bilder och tilldelar den till egenskapen NativeApplication.nativeApplication.icon.bitmaps. Storleken på aktivitetsfältsikonerna kan variera mellan olika operativsystem. Du kan undvika att bildkvaliteten försämras på grund av skalning genom att lägga till flera storlekar på bilderna i bitmaps-arrayen. Om du lägger till fler än en bild väljs automatiskt den storlek som bäst matchar aktivitetsfältsikonens aktuella visningsstorlek, och bilden skalas vid behov. I följande exempel anges bilden för en aktivitetsfältsikon med två bilder:

NativeApplication.nativeApplication.icon.bitmaps =  
            [bmp16x16.bitmapData, bmp128x128.bitmapData]; 

Om du vill ändra ikonbilden tilldelar du en array som innehåller den nya bilden (eller bilderna) till egenskapen bitmaps. Du kan animera ikonen genom att ändra bilden som svar på en enterFrame- eller timer-händelse.

Om du vill ta bort ikonen från meddelandeområdet i Windows och Linux, eller återställa ikonernas standardutseende i Mac OS X, tilldelar du en tom array till bitmaps:

NativeApplication.nativeApplication.icon.bitmaps = []; 

Dockningsikoner

AIR stöder dockningsikoner när NativeApplication.supportsDockIcon har värdet true. Egenskapen NativeApplication.nativeApplication.icon representerar programikonen i Dock (inte en fönsterikon).

Obs! AIR stöder inte ändring av fönsterikoner i Dock i Mac OS X. Dessutom gäller endast ändringar i programikonerna i Dock när ett program körs. Ikonen återfår sitt normala utseende när programmet avslutas.

Ikonmenyer i Dock

Du kan lägga till kommandon på standardmenyn i Dock genom att skapa ett NativeMenu-objekt som innehåller kommandona och tilldela det till egenskapen NativeApplication.nativeApplication.icon.menu. Objekten på menyn visas ovanför alternativen på standardmenyn i Dock.

Studsa dockan

Du kan studsa dockningsikonen genom att anropa metoden NativeApplication.nativeApplication.icon.bounce(). Om du anger Informational för parametern bounce() priority studsar ikonen en gång. Om du anger Critical studsar ikonen tills användaren aktiverar programmet. Konstanter för parametern priority definieras i klassen NotificationType.

Obs! Ikonen studsar inte om programmet redan är aktivt.

Dockningsikonhändelser

När du klickar på dockningsikonen skickar NativeApplication-objektet en invoke-händelse. Om programmet inte är igång startas det automatiskt. I annat fall skickas invoke-händelsen till den programinstans som körs.

Systemfältsikoner

AIR stöder systemfältsikoner när NativeApplication.supportsSystemTrayIcon är true, vilket för närvarande är fallet endast på Windows och de flesta Linux-distributioner. På Windows och Linux visas systemfältsikoner i aktivitetsfältets meddelandeområde. Ingen ikon visas som standard. Om du vill visa en ikon tilldelar du en array som innehåller BitmapData-objekt till egenskapen bitmaps för ikonen. Om du vill ändra ikonbilden tilldelar du en array som innehåller de nya bilderna till bitmaps. Om du vill ta bort ikonen anger du värdet null för bitmaps.

Ikonmenyer i systemfältet

Du kan lägga till en meny till systemfältsikonen genom att skapa ett NativeMenu-objekt och tilldela det till egenskapen NativeApplication.nativeApplication.icon.menu (ingen standardmeny tillhandahålls i operativsystemet). Du öppnar systemfältsikonens meny genom att högerklicka på ikonen.

Knappbeskrivningar för systemfältsikoner

Du lägger till en knappbeskrivning för en ikon genom att ange egenskapen tooltip:

NativeApplication.nativeApplication.icon.tooltip = "Application name"; 

Händelser för systemfältsikoner

Det SystemTrayIcon-objekt som egenskapen NativeApplication.nativeApplication.icon refererar till skickar en ScreenMouseEvent för click-, mouseDown-, mouseUp-, rightClick-, rightMouseDown- och rightMouseUp-händelser. Du kan använda dessa händelser tillsammans med en ikonmeny så att användarna kan interagera med ditt program när det saknar synliga fönster.

Exempel: Skapa ett program utan fönster

I följande exempel skapas ett AIR-program som har en systemfältsikon, men inga synliga fönster. (Egenskapen visible för programmet kan inte vara angivet till true i programbeskrivningen eftersom fönstret då visas när programmet startas.)

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]; 
        } 
    } 
} 
Obs! När du använder Flex WindowedApplication-komponenten måste du ange attributet visible för WindowedApplication-taggen till false. Detta attribut åsidosätter inställningen i programbeskrivningen.
Obs! I exemplet antas att programkatalogen innehåller bildfiler med namnen AIRApp_16.png och AIRApp_128.png i underkatalogen icons. (I AIR SDK finns exempel på ikonfiler som du kan kopiera till projektmappen.)

Ikoner och knappar i Aktivitetsfältet i Windows

Ikoner som representerar fönster visas vanligtvis i fönsterområdet i Aktivitetsfältet eller i Dock så att användarna enkelt kan få åtkomst till bakgrunder eller minimerade fönster. I Dock i Mac OS X visas både en ikon för ditt program och en ikon för varje minimerat fönster. Aktivitetsfälten i Microsoft Windows och Linux visar en knapp med programikonen och titeln för varje fönster av normaltyp i ditt program.

Markera fönsterknappen i Aktivitetsfältet

När ett fönster är i bakgrunden kan du meddela användaren att det har inträffat en händelse som rör fönstret. I Mac OS X kan du meddela användaren genom att studsa programikonen i Dock (se Studsa dockan). På Windows and Linux kan du markera knappen på aktivitetsfältet genom att anropa notifyUser()-metoden i NativeWindow-instansen. Parametern type som skickas till metoden anger hur viktigt meddelandet är:

  • NotificationType.CRITICAL: fönsterikonen blinkar tills användaren placerar fönstret i förgrunden.

  • NotificationType.INFORMATIONAL: fönsterikonen markeras genom att den ändrar färg.

    Obs! På Linux stöds endast meddelanden av informativ typ. Om du överför ett typvärde till funktionen notifyUser() får du samma resultat.

    Följande programsats markerar fönsterknappen i Aktivitetsfältet:

    stage.nativeWindow.notifyUser(NotificationType.CRITICAL); 

    Det händer ingenting om metoden NativeWindow.notifyUser() anropas i ett operativsystem som saknar stöd för fönstermeddelanden. Använd egenskapen NativeWindow.supportsNotification om du vill ta reda på om fönstermeddelanden stöds.

Skapa fönster utan knappar eller ikoner i Aktivitetsfältet

I operativsystemet Windows visas inte fönster som har skapats med typerna utility eller lightweight i Aktivitetsfältet. Osynliga fönster visas inte heller i Aktivitetsfältet.

Eftersom det ursprungliga fönstret har typen normal måste du antingen stänga det ursprungliga fönstret eller låta det vara osynligt för att kunna skapa ett program utan att några fönster visas i Aktivitetsfältet. Om du vill stänga alla fönster i programmet utan att avsluta programmet, anger du värdet false för NativeApplication-objektets autoExit-egenskap innan du stänger det sista fönstret. Om du vill förhindra att det ursprungliga fönstret överhuvudtaget visas, lägger du till <visible>false</visible> för programbeskrivningsfilens <initalWindow>-element (och försäkra dig om att inte visible-egenskapen har värdet true eller att metoden activate() för fönstret anropas).

I nya fönster som öppnas av programmet anger du NativeWindowType.UTILITY eller NativeWindowType.LIGHTWEIGHT för type-egenskapen för det NativeWindowInitOption-objekt som skickas till fönsterkonstruktorn.

I Mac OS X visas minimerade fönster i Dock. Du kan förhindra att den minimerade ikonen visas genom att dölja fönstret i stället för att minimera det. I följande exempel görs en lyssning efter en nativeWindowDisplayState-ändringshändelse, och händelsen avbryts om fönstret minimeras. I stället anges värdet false för fönstrets visible-egenskap med hanteraren:

private function preventMinimize(event:NativeWindowDisplayStateEvent):void{ 
    if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){ 
        event.preventDefault(); 
        event.target.visible = false; 
    } 
} 

Om ett fönster är minimerat i Dock i Mac OS X när du anger värdet false för egenskapen visible tas dockningsikonen inte bort. Användarna kan fortfarande visa fönstret igen genom att klicka på ikonen.