Muchos sistemas operativos incluyen una barra de tareas (en Mac OS X, por ejemplo, el Dock) que pueden contener iconos para representar aplicaciones. Adobe® AIR® proporciona una interfaz para interactuar con los iconos de la barra de tareas de la aplicación mediante la propiedad
NativeApplication.nativeApplication.icon
.
Iconos de la barra de tareas
AIR crea el objeto
NativeApplication.nativeApplication.icon
automáticamente. En función del sistema operativo, el tipo de objeto es DockIcon o SystemTrayIcon. Es posible determinar cuál de estas subclases InteractiveIcon admitidas por AIR en el sistema operativo actual mediante las propiedades
NativeApplication.supportsDockIcon
y
NativeApplication.supportsSystemTrayIcon
. La clase base InteractiveIcon incluye las propiedades
width
,
height
y
bitmaps
. Estas propiedades se pueden utilizar para cambiar la imagen utilizada para el icono. Ahora bien, si accede a propiedades específicas de DockIcon o de SystemTrayIcon en el sistema operativo incorrecto se producirá un error de tiempo de ejecución.
Para establecer o cambiar la imagen utilizada para un icono, cree un conjunto que contenga una o varias imágenes y asígnelo a la propiedad
NativeApplication.nativeApplication.icon.bitmaps
. El tamaño de los iconos de la barra de tareas puede variar según el sistema operativo. Para que la imagen no se deteriore por el cambio de tamaño, puede añadir varios tamaños de imágenes al conjunto
bitmaps
. Si incluye más de una imagen, AIR selecciona el tamaño que más se acerque al tamaño real del icono en la barra de tareas y lo cambia de tamaño únicamente si es necesario. El siguiente ejemplo establece la imagen de un icono de la barra de tareas a partir de dos imágenes:
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
Para cambiar la imagen del icono, asigne un conjunto con la nueva imagen o las nuevas imágenes a la propiedad
bitmaps
. Puede animar el icono haciendo que la imagen cambie en respuesta a un evento
enterFrame
o
timer
.
Para eliminar el icono del área de notificación de Windows y Linux o para restaurar el aspecto predeterminado del icono en Mac OS X, establezca
bitmaps
como un conjunto vacío:
NativeApplication.nativeApplication.icon.bitmaps = [];
Iconos del Dock
AIR admite iconos del Dock si
NativeApplication.supportsDockIcon
es
true
. La propiedad
NativeApplication.nativeApplication.icon
representa el icono de la aplicación en el Dock (no el icono de la ventana).
Nota:
con AIR no es posible cambiar los iconos de ventanas en el Dock en Mac OS X. Asimismo, los cambios realizados en el icono del Dock de la aplicación solo se aplican cuando la aplicación se está ejecutando (el icono recupera su aspecto normal cuando se cierra la aplicación).
Menús de iconos del Dock
Es posible añadir comandos al menú estándar del Dock. Basta con crear un objeto NativeMenu que contenga los comandos y asignarlo a la propiedad
NativeApplication.nativeApplication.icon.menu
. Las opciones del menú se visualizarán encima de las opciones estándar del menú del icono del Dock.
Efecto de rebote de los iconos del Dock
Puede hacer que el icono del Dock tenga efecto de rebote si llama al método
NativeApplication.nativeApplication.icon.bounce()
. Si establece el parámetro
bounce() priority
como informativo, el icono rebota una vez. Si se establece como crítico, el icono rebota hasta que el usuario activa la aplicación. Las constantes del parámetro
priority
se definen en la clase NotificationType.
Nota:
el icono no tiene efecto de rebote si la aplicación ya está activa.
Eventos de iconos del Dock
Cuando se hace clic en un icono del Dock, el objeto NativeApplication distribuye un evento
invoke
. Si la aplicación no está en ejecución, el sistema la inicia. En caso contrario, se entrega el evento
invoke
a la instancia de la aplicación en ejecución.
Iconos de la bandeja del sistema
AIR admite iconos de bandeja del sistema si
NativeApplication.supportsSystemTrayIcon
es
true
(esto solo sucede en Windows y en la mayoría de distribuciones de Linux). En Windows y Linux, los iconos de la bandeja del sistema se visualizan en el área de notificación de la barra de tareas. De forma predeterminada, no aparece ningún icono. Para mostrar un icono, debe asignar un conjunto que contenga objetos BitmapData a la propiedad
bitmaps
del icono. Para cambiar la imagen del icono, asigne un conjunto con las nuevas imágenes a
bitmaps
. Para quitar el icono, establezca
bitmaps
como
null
.
Menús de los iconos de la bandeja del sistema
Es posible añadir un menú al icono de la bandeja del sistema. Basta con crear un objeto NativeMenu y asignarlo a la propiedad
NativeApplication.nativeApplication.icon.menu
(el sistema operativo no proporciona ningún menú predeterminado). Para acceder al menú del icono de la bandeja del sistema, haga clic con el botón derecho sobre el icono.
Sugerencias de los iconos de la bandeja del sistema
Puede añadir una sugerencia a un icono si establece la propiedad tooltip:
NativeApplication.nativeApplication.icon.tooltip = "Application name";
Eventos de iconos de la bandeja del sistema
El objeto SystemTrayIcon al que hace referencia la propiedad NativeApplication.nativeApplication.icon distribuye un evento ScreenMouseEvent en los eventos
click
,
mouseDown
,
mouseUp
,
rightClick
,
rightMouseDown
y
rightMouseUp
. Puede utilizar estos eventos, junto con el menú del icono, para permitir que los usuarios puedan interactuar con la aplicación cuando esta no tenga ninguna ventana visible.
Ejemplo: Creación de una aplicación sin ventanas
El siguiente ejemplo crea una aplicación de AIR con un icono de bandeja del sistema pero sin ventanas visibles. (La propiedad
visible
de la aplicación no se debe establecer en
true
en el descriptor de la aplicación o la ventana estará visible cuando se inicie la aplicación.)
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];
}
}
}
Nota:
al utilizar el componente WindowedApplication de Flex, el atributo
visible
de la etiqueta WindowedApplication debe definirse como
false
. Este atributo sustituye a la configuración en el descriptor de la aplicación.
Nota:
en el ejemplo se asume que existen dos archivos de imagen llamados
AIRApp_16.png
y
AIRApp_128.png
en un subdirectorio de la aplicación denominado
icons
. (El SDK de AIR contiene archivos de icono de ejemplos que puede copiar en su carpeta del proyecto.)
Botones e iconos de la barra de tareas de la ventana
Los iconos de las ventanas se suelen visualizar en un área de la ventana, denominada barra de tareas o Dock, para que los usuarios puedan acceder fácilmente a las ventanas en segundo plano o minimizadas. El Dock de Mac OS X muestra un icono de las aplicaciones así como uno para cada ventana minimizada. Las barras de tareas de Microsoft Windows y Linux muestran un botón con el icono del programa y el título de cada ventana de tipo normal de la aplicación.
Resaltar el botón de ventana de la barra de tareas
Si una ventana está en segundo plano, puede avisar al usuario de la existencia de un evento de interés relacionado con la ventana. En Mac OS X, puede avisar al usuario con un efecto de rebote del icono en el Dock (tal como se describe en la sección
Efecto de rebote de los iconos del Dock
). En Windows y Linux, puede resaltar el botón de la barra de tareas de la ventana llamando al método
notifyUser()
de la instancia de NativeWindow. El parámetro
type
transferido al método determina la urgencia de la notificación:
-
NotificationType.CRITICAL
: el icono de la ventana parpadea hasta que el usuario la pone en primer plano.
-
NotificationType.INFORMATIONAL
: el icono de la ventana se resalta cambiando de color.
Nota:
en Linux, solo se admite el tipo informativo de notificación. La transmisión de cualquier valor de tipo a la función
notifyUser()
creará el mismo efecto.
La siguiente sentencia resalta el botón de la barra de tareas de una ventana:
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
Si llama al método
NativeWindow.notifyUser()
en un sistema operativo no compatible con avisos de nivel de ventana, no producirá ningún efecto. Utilice la propiedad
NativeWindow.supportsNotification
para determinar si es compatible con la notificación de ventanas.
Creación de ventanas sin botones ni iconos de barra de tareas
En el sistema operativo Windows, las ventanas creadas con los tipos
utility
o
lightweight
no aparecen en la barra de tareas. Las ventanas invisibles tampoco aparecen en la barra de tareas.
Dado que la ventana inicial siempre es de tipo
normal
para poder crear una aplicación sin ventanas en la barra de tareas, debe cerrar la ventana inicial o hacerla invisible. Para cerrar todas las ventanas de la aplicación sin salir del programa, establezca la propiedad
autoExit
del objeto NativeApplication como
false
antes de cerrar la última ventana. Si simplemente quiere evitar que la ventana principal sea visible, añada
<visible>false</visible>
al elemento
<initalWindow>
del archivo descriptor de la aplicación (y no establezca la propiedad
visible
como
true
ni llame al método
activate()
de la ventana).
En la ventanas nuevas abiertas por la aplicación, establezca la propiedad
type
del objeto NativeWindowInitOption transferido al constructor de la ventana como
NativeWindowType.UTILITY
o
NativeWindowType.LIGHTWEIGHT
.
En Mac OS X, las ventanas minimizadas se visualizan en el Dock. Si quiere evitar que el icono minimizado se visualice, oculte la ventana en vez de minimizarla. El siguiente ejemplo detecta un evento de cambio
nativeWindowDisplayState
y lo cancela y la ventana se está minimizando. En su lugar, el controlador establece la propiedad
visible
de la ventana como
false
:
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
Si una ventana está minimizada en el Dock de Mac OS X al establecer la propiedad
visible
como
false
, el icono del Dock no desaparece. El usuario puede seguir haciendo clic en el icono para volver a mostrar la ventana.
|
|
|