Si esta guía se distribuye con software que incluye un contrato de licencia de usuario final, la guía, así como el software descrito en ella, se proporciona con una
licencia y sólo puede usarse o copiarse en conformidad con los términos de dicha licencia. Con la excepción de lo permitido por la licencia, ninguna parte de
esta guía puede ser reproducida, almacenada en un sistema de recuperación de datos ni transmitida de ninguna forma ni por ningún medio, ya sea electrónico,
mecánico, de grabación o de otro tipo, sin el consentimiento previo por escrito de Adobe Systems Incorporated. Tenga en cuenta que el contenido de esta guía
está protegido por las leyes de derechos de autor aunque no se distribuya con software que incluya un contrato de licencia de usuario final.
El contenido de esta guía se proporciona exclusivamente con fines informativos, está sujeto a cambios sin previo aviso y no debe interpretarse como un
compromiso de Adobe Systems Incorporated. Adobe Systems Incorporated no asume ninguna responsabilidad por los errores o imprecisiones que puedan
existir en el contenido informativo de esta guía.
Recuerde que las ilustraciones o imágenes existentes que desee incluir en su proyecto pueden estar protegidas por las leyes de derechos de autor. La incorporación
no autorizada de este material en sus trabajos puede infringir los derechos del propietario de los derechos de autor. Asegúrese de obtener los permisos necesarios
del propietario de los derechos de autor.
Las referencias a nombres de empresas que aparecen en las plantillas de ejemplo sólo tienen fines ilustrativos y no pretenden hacer referencia a ninguna
organización real ni a personas concretas.
Adobe, the Adobe logo, Acrobat, ActionScript, Adobe AIR, ColdFusion, Dreamweaver, Flash, Flex, Flex Builder, and Reader are either registered trademarks or
trademarks of Adobe Systems Incorporated in the United States and/or other countries.
Microsoft and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Apple, Macintosh,
and Mac OS are trademarks of Apple Inc., registered in the United States and other countries. Java is a trademarks or registered trademark of Sun Microsystems,
Inc. in the United States and other countries. Linux is the registered trademark of Linus Torvalds in the U.S. and other countries. All other trademarks are the
property of their respective owners.
This work is licensed under the Creative Commons Attribution Non-Commercial 3.0 License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-nc/3.0/us/
This product includes software developed by the Apache Software Foundation (
MPEG Layer-3 audio compression technology licensed by Fraunhofer IIS and Thomson Multimedia (
Speech compression and decompression technology licensed from Nellymoser, Inc. (
This product includes software developed by the OpenSymphony Group (
http://www.opensymphony.com/)
This product contains either BSAFE and/or TIPEM software by RSA Security, Inc.
Sorenson Spark™ video compression and decompression technology licensed from Sorenson Media, Inc.
This product includes software developed by the IronSmith Project (
http://www.ironsmith.org/).
Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, USA.
Notice to U.S. Government End Users. The Software and Documentation are “Commercial Items,” as that term is defined at 48 C.F.R. §2.101, consisting of
“Commercial Computer Software” and “Commercial Computer Software Documentation,” as such terms are used in 48 C.F.R. §12.212 or 48 C.F.R. §227.7202,
as applicable. Consistent with 48 C.F.R. §12.212 or 48 C.F.R. §§227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and
Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial Items and (b) with only those rights
as are granted to all other end users pursuant to the terms and conditions herein. Unpublished-rights reserved under the copyright laws of the United States.
Adobe Systems Incorporated, 345 Park Avenue, San Jose, CA 95110-2704, USA. For U.S. Government End Users, Adobe agrees to comply with all applicable
equal opportunity laws including, if appropriate, the provisions of Executive Order 11246, as amended, Section 402 of the Vietnam Era Veterans Readjustment
Assistance Act of 1974 (38 USC 4212), and Section 503 of the Rehabilitation Act of 1973, as amended, and the regulations at 41 CFR Parts 60-1 through 60-60,
60-250, and 60-741. The affirmative action clause and regulations contained in the preceding sentence shall be incorporated by reference.
Adobe® AIR™ permite ejecutar aplicaciones de AIR en el escritorio. El motor de ejecución se puede instalar de
cualquiera de las formas siguientes:
• Mediante la instalación independiente del motor de ejecución (sin instalar además una aplicación de AIR).
• Mediante la instalación de una aplicación de AIR por primera vez (aparecerá un mensaje sugiriendo que se instale
el motor de ejecución).
• Mediante la instalación de un entorno de desarrollo de AIR como el kit de desarrollo de software de AIR, Adobe®
Flex™ Builder™ 3 o el kit de desarrollo de software de Adobe Flex™ 3 (que incluye las herramientas de desarrollo de
la línea de comandos de AIR).
El motor de ejecución sólo necesita instalarse una vez en cada ordenador.
Los requisitos del sistema para instalar AIR y ejecutar aplicaciones de AIR se describen en: Adobe AIR: Requisitos del
sistema (http://www.adobe.com/es/products/air/systemreqs/).
1
Instalación de Adobe AIR
Siga estas instrucciones para descargar e instalar las versiones de AIR para Windows®, Mac OS X y Linux.
Para actualizar el motor de ejecución, el usuario debe contar con privilegios de administrador del ordenador.
Instalación del motor de ejecución en un ordenador con Windows
1 Descargue el archivo de instalación del motor de ejecución.
2 Haga doble clic en el archivo de instalación del motor de ejecución.
3 Siga las indicaciones que aparecen en la ventana de instalación para llevar a cabo la instalación.
Instalación del motor de ejecución en un ordenador con Mac
1 Descargue el archivo de instalación del motor de ejecución.
2 Haga doble clic en el archivo de instalación del motor de ejecución.
3 Siga las indicaciones que aparecen en la ventana de instalación para llevar a cabo la instalación.
4 Si el instalador presenta una ventana de autenticación, escriba el nombre de usuario y la contraseña que utiliza para
Mac OS.
Instalación del motor de ejecución en un ordenador con Linux
1 Descargue el archivo de instalación del motor de ejecución.
2 Establezca los permisos de archivo para que se pueda ejecutar la aplicación de instalación:
Desde una línea de comandos, puede definir los permisos de archivo con el comando
Algunas versiones de Linux permiten establecer permisos de archivo en el cuadro de diálogo de propiedades que se
abre mediante un menú contextual.
chmod +x installer.bin.
3 Ejecute el instalador desde la línea de comandos o haciendo doble clic en el archivo de instalación.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
4 Siga las indicaciones que aparecen en la ventana de instalación para llevar a cabo la instalación.
AIR se instala como paquete rpm o dpkg, con los nombres:
ejecución de un servidor X. AIR registra el tipo mime:
package+zip.
adobeairv.n y adobecerts. La instalación requiere la
application/vnd.adobe.air-application-installer-
Instalación de Adobe AIR
Desinstalación de Adobe AIR
Una vez instalado el motor de ejecución, se puede desinstalar siguiendo los procedimientos que se explican a
continuación.
Desinstalación del motor de ejecución en un ordenador con Windows
1 En el menú Inicio de Windows, seleccione Configuración > Panel de control.
2 Seleccione la opción Agregar o quitar programas.
3 Seleccione “Adobe AIR” para desinstalar el motor de ejecución.
4 Haga clic en el botón Cambiar o quitar.
2
Desinstalación del motor de ejecución en un ordenador con Mac
• Haga doble clic en el archivo de desinstalación de Adobe AIR, que se encuentra en la carpeta
/Aplicaciones/Utilidades.
Desinstalación del motor de ejecución en un ordenador con Linux
Realice uno de los siguientes pasos:
• Seleccione el comando“Desinstalador de Adobe AIR” en el menú Aplicaciones.
• Ejecute el instalador de AIR con la opción -uninstall.
• Elimine los paquetes de AIR (adobeairv.n y adobecerts) con el administrador de paquetes.
Instalación y ejecución de las aplicaciones de AIR de
muestra
Hay algunas aplicaciones de muestra a disposición para demostrar las funciones de AIR. Para tener acceso a las mismas
e instalarlas, siga estas instrucciones:
1 Descargue y ejecute las aplicaciones de AIR de muestra. Están a disposición tanto las aplicaciones compiladas como
el código fuente.
2 Para descargar y ejecutar una aplicación de muestra, haga clic en el botón Instalar ahora de la aplicación. Un
mensaje indica instalar y ejecutar la aplicación.
3 Si opta por descargar aplicaciones de muestra y ejecutarlas más adelante, seleccione los vínculos de descarga. Las
aplicaciones de AIR pueden ejecutarse en cualquier momento de la siguiente manera:
• En Windows, haga doble clic en el icono de la aplicación que se encuentra en el escritorio o seleccione la
aplicación en el menú Inicio.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Instalación de Adobe AIR
• En Mac OS, haga doble clic en el icono de la aplicación, que se instala por omisión en la carpeta Aplicaciones de
su directorio de usuario (por ejemplo, en Macintosh HD/Usuarios/UsuarioFicticio/Aplicaciones/).
• En Linux, haga doble clic en el icono de la aplicación que se encuentra en el escritorio o seleccione la aplicación
en el menú de aplicaciones. Las aplicaciones de AIR se instalan en su propia carpeta en el directorio
/opt.
Nota: revise las notas de versión de AIR por si hubiera alguna actualización de estas instrucciones. Puede encontrarlas
en: http://www.adobe.com/go/learn_air_relnotes_es.
3
Capítulo 2: Configuración de Flash CS3
para Adobe AIR
La actualización de Adobe® AIR™ para Adobe® Flash® CS3 Professional aumenta el entorno de desarrollo de Flash con
elementos que permiten al usuario crear aplicaciones de AIR con Flash. Permite crear, probar y depurar archivos de
aplicaciones de AIR en Flash.
Adobe® Flash® CS4 Professional puede crear aplicaciones de AIR, ya que lo admite de forma nativa. Para obtener más
información, consulte Publicación para Adobe AIR en Utilización de Flash.
La actualización de Adobe AIR para Flash CS3 admite AIR 1.0 y 1.1 y Flash Player 9.x. Flash CS4 es necesario para
desarrollar aplicaciones con AIR 1.5 y Flash Player 10.
Requisitos del sistema para la Actualización de Adobe
AIR para Flash CS3
4
Para poder utilizar Flash CS3 en el desarrollo y la ejecución de aplicaciones de AIR, debe tener el siguiente software
instalado:
• Flash CS3 Professional
Si no dispone de una copia de Flash CS3 Professional, puede adquirirla en el sitio Web de Adobe:
http://www.adobe.com/es/products/flash/
• Adobe AIR
Para obtener información sobre la instalación de Adobe AIR, consulte “Instalación de Adobe AIR” en la página 1.
• Actualización de Adobe AIR para Flash CS3
Si tiene instalada una versión anterior de la actualización de Adobe AIR para Flash CS3, siga los pasos que se describen
en Desinstalación de la actualización de Adobe AIR para Flash CS3 para desinstalarla. Si no tiene instalada ninguna
actualización de Adobe AIR para Flash CS3, continúe con los pasos de la sección “Instalación de la actualización de
Adobe AIR para Flash CS3” en la página 4.
Instalación de la actualización de Adobe AIR para Flash
CS3
Antes de instalar la actualización de Adobe AIR para Flash CS3, salga de Flash y de todos los navegadores que tenga
abiertos.
• Descargue la actualización de Adobe AIR para Flash CS3.
• Una vez descargada la actualización, haga doble clic en el archivo para instalarlo.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de Flash CS3 para Adobe AIR
Desinstalación de la actualización de Adobe AIR para
Flash CS3
Si tiene instalada una versión anterior de la actualización de Adobe AIR para Flash CS3, siga estos pasos para
desinstalarla antes de instalar la nueva actualización de Adobe AIR para Flash CS3.
1 Elimine la siguiente carpeta:
(Windows) Disco duro:\Archivos de programa\Adobe\Adobe Flash CS3\AIK
(Mac) HD:/Aplicaciones/Adobe Flash CS3/AIK
2 Vaya a la siguiente ubicación:
(Windows) Disco duro:\Archivos de programa\Adobe\Adobe Flash CS3\<idioma>\First Run\Commands\
(Windows) Disco duro:\Document and Settings\<nombre de usuario>\Local Settings\Application
Data\Adobe\Flash CS3\<idioma>\Configuration\Commands\
(Mac) HD:/Usuarios/<nombre de usuario>/Librería/Application Support/Adobe/Flash
CS3/<idioma>/Configuration/Commands/
y elimine las siguientes carpetas/archivos:
• Carpeta AIR
• AIR - Application and Installer Settings.jsfl
• AIR - Create AIR File.jsfl
Nota: si no ve la ubicación especificada en Windows, active la opción "Mostrar archivos/carpetas ocultos" en Opciones
de carpeta.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de Flash CS3 para Adobe AIR
Influencia de AIR en Flash CS3
Tras instalar la actualización de Adobe AIR, comprobará los cambios siguientes en Flash:
• En la ficha Flash del cuadro de diálogo Configuración de publicación (Archivo -> Configuración de publicación),
hay una nueva entrada en el menú Versión de Adobe AIR 1.0.
• Una pantalla de bienvenida actualizada con una entrada para crear un archivo de Flash (Adobe AIR).
(Windows) Disco duro:\Archivos de programa\Adobe\Adobe Flash CS3\en\FirstRun\StartPage
(Windows) Disco duro:\Archivos de programa\Adobe\Adobe Flash CS3\en\FirstRun\StartPage\resources
Nota: si instala la aplicación en un ordenador Macintosh, si no aparece la opción Archivo de Flash (Adobe AIR) en
la pantalla de bienvenida, elimine la siguiente carpeta y reinicie Flash:
HD:/Usuarios/<nombre de usuario>/Librería/Application Support/Adobe/Flash
CS3/<idioma>/Configuration/StartPage
• Un nuevo archivo playerglobal.swc que incluye todas las API de ActionScript 3.0 y de Adobe AIR en la carpeta
ActionScript 3.0/Classes.
(Windows) Disco duro:\Archivos de programa\Adobe\Adobe Flash CS3\en\Configuration\ActionScript 3.0
Classes
Adobe® AIR™ es un motor de ejecución válido para todos los sistemas operativos que le permite aprovechar sus
habilidades de desarrollo Web existentes (Adobe® Flash® CS3 Professional, Adobe® Flash® CS4 Professional, Adobe®
Flex™, Adobe® ActionScript® 3.0, HTML, JavaScript®, Ajax) para crear e implementar aplicaciones de Internet
enriquecidas (RIA) en el escritorio.
Para obtener más información sobre el uso y una introducción a Adobe AIR, consulte Adobe AIR Developer
Connection http://www.adobe.com/devnet/air/ (Centro de desarrollo de Adobe AIR) (en inglés).
AIR permite trabajar en entornos que le son familiares para aprovechar las herramientas y los métodos que le resulten
más cómodos. Su compatibilidad con Flash, Flex, HTML, JavaScript y Ajax le brinda la mejor experiencia posible para
satisfacer sus necesidades.
Por ejemplo, se pueden desarrollar aplicaciones utilizando una de las tecnologías siguientes o combinando varias de
ellas:
• Flash/Flex/ActionScript
• HTML/JavaScript/CSS/Ajax
• PDF (que puede aprovecharse con cualquier aplicación)
7
En consecuencia, las aplicaciones de AIR pueden ser:
• basadas en Flash o Flex: aplicación cuyo contenido raíz es Flash/Flex (SWF);
• basadas en Flash o Flex con HTML o PDF. Aplicaciones cuyo contenido raíz es Flash/Flex (SWF) y que incluyen
contenido HTML (HTML, JS, CSS) o PDF;
• basadas en HTML. Aplicación cuyo contenido raíz es HTML, JS, CSS;
• basadas en HTML con Flash/Flex o PDF. Aplicaciones cuyo contenido raíz es HTML y que incluyen contenido de
Flash/Flex (SWF) o PDF.
Los usuarios interactúan con las aplicaciones de AIR de la misma forma en que interactúan con las aplicaciones de
escritorio nativas. El motor de ejecución se instala una vez en el ordenador del usuario y después se instalan y ejecutan
las aplicaciones de AIR como cualquier otra aplicación de escritorio.
El motor de ejecución ofrece una arquitectura y plataforma compatibles con distintos sistemas operativos para la
implementación de aplicaciones. La compatibilidad y constancia del funcionamiento y las interacciones en distintos
escritorios obvia la necesidad de realizar pruebas en distintos navegadores. En lugar de desarrollar programas para un
sistema operativo determinado, el desarrollador centra sus esfuerzos en el motor de ejecución, lo cual ofrece las
siguientes ventajas:
• Las aplicaciones desarrolladas para AIR se ejecutan en varios sistemas operativos distintos sin suponer trabajo
adicional para el desarrollador. El motor de ejecución asegura una presentación e interacciones constantes y
predecibles en todos los sistemas operativos compatibles con AIR.
• La creación de aplicaciones se agiliza gracias a que se pueden aprovechar las tecnologías Web y los diseños
existentes, así como extender las aplicaciones Web al escritorio sin necesidad de aprender las tradicionales
tecnologías de desarrollo del escritorio o la complejidad del código nativo.
• El desarrollo de aplicaciones resulta más fácil que cuando se utilizan lenguajes de nivel inferior como C y C++. No
hace falta gestionar las complejas API de nivel inferior que son específicas para cada sistema operativo.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Presentación de Adobe AIR
Al desarrollar aplicaciones para AIR se puede aprovechar un juego enriquecido de arquitecturas e interfaces API:
• API específicas para AIR proporcionadas por el motor de ejecución y la arquitectura de AIR
• API de ActionScript utilizadas en archivos SWF y la arquitectura de Flex (además de otras bibliotecas y
arquitecturas basadas en ActionScript)
• HTML, CSS y JavaScript
• La mayoría de las arquitecturas de Ajax
AIR es toda una novedad en la forma de crear, implementar y experimentar las aplicaciones. Permite tener un mayor
control creativo y extender al escritorio las aplicaciones basadas en Flash, Flex, HTML y Ajax sin necesidad de
aprender las tradicionales tecnologías de desarrollo del escritorio.
Novedades de AIR 1.1
Adobe AIR 1.1 ha introducido las siguientes nuevas capacidades:
• La instalación y otros cuadros de diálogo del motor de ejecución se han traducido a los siguientes idiomas:
• Portugués brasileño
• Chino (tradicional y simplificado)
• Francés
• Alemán
• Italiano
• Japonés
• Coreano
• Ruso
• Francés
• Español
• Compatibilidad con la creación de aplicaciones internacionalizadas, incluyendo acciones de teclado para idiomas
de doble byte. Consulte “Localización de aplicaciones de AIR” en la página 347.
• Compatibilidad para localizar los atributos de nombre y descripción en el archivo descriptor de la aplicación.
• Compatibilidad para localizar mensajes de error como, por ejemplo, SQLError.detailID y
SQLError.detailArguments, en la base de datos SQLite.
• Incorporación de la propiedad Capabilities.languages para obtener un conjunto de idiomas de IU preferidos
como se establece mediante el sistema operativo.
• Los menús predeterminados y las etiquetas de botón HTML como, por ejemplo, menús contextuales y la barra
de menú de Mac, se han localizado a todos los idiomas compatibles.
• Compatibilidad para la migración de certificados de una aplicación con firma automática a otra que se encadena
con una entidad emisora de certificados (CA).
• Compatibilidad con Microsoft Windows XP Tablet PC Edition y con ediciones de 64 bits de Windows Vista® Home
Premium, Business, Ultimate o Enterprise.
• Incorporación de la API File.spaceAvailable para obtener la cantidad de espacio en disco disponible en un disco.
8
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Presentación de Adobe AIR
• Incorporación de la propiedad NativeWindow.supportsTransparency para establecer si una ventana se puede
dibujar como transparente mediante el sistema operativo actual.
Para obtener más información sobre la versión de AIR 1.1, consulte las notas de versión de Adobe AIR 1.1
(http://www.adobe.com/go/learn_air_relnotes_es).
Novedades de AIR 1.5
Adobe AIR 1.5 presenta las siguientes nuevas funciones:
• Compatibilidad con las siguientes funciones de Flash Player 10.
• Efectos y filtros personalizados
• API de dibujo avanzada
• Generación dinámica de sonido
• Tipo de datos vectoriales
• API mejorada de carga y descarga de archivos
• Protocolo RTMFP (Real Time Media Flow Protocol) de flujo de medios en tiempo real
• Efectos 3D
• Compatibilidad para texto avanzado
• Administración de color
• Motor de texto
• Transmisión de flujo dinámica
• Códec de audio Speex
9
Para obtener más información, consulte http://www.adobe.com/es/products/flashplayer/features/ para ver más
datos sobre estas funciones.
• Idiomas adicionales admitidos en el instalador de AIR 1.5 y otros cuadros de diálogo del motor de ejecución: checo,
neerlandés, sueco, turco y polaco.
• Cifrado de la base de datos.
Los archivos de base de datos se pueden cifrar en AIR 1.5. Todo el contenido de base de datos, incluyendo los
metadatos, se pueden cifrar para que la información no se pueda leer fuera de la aplicación de AIR que la cifró. Esta
función permitirá que los desarrolladores cifren, descifren y vuelvan a cifrar archivos de base de datos. Consulte
“Almacenamiento de datos cifrados” en la página 216.
• La versión de WebKit utilizada por Adobe AIR se ha actualizado y ahora incluye compatibilidad para el intérprete
de JavaScript, SquirrelFish.
• Nuevas API de validación de firmas XML que se pueden utilizar para ayudar a verificar la integridad y la identidad
del firmante de los datos o información. Consulte la validación de firmas XML.
Para obtener más información sobre la versión de AIR 1.5, consulte las notas de versión de Adobe AIR 1.5
(http://www.adobe.com/go/learn_air_relnotes_es).
Capítulo 4: Recursos sobre AIR
Para obtener más información sobre el desarrollo de aplicaciones de Adobe® AIR™, consulte los recursos siguientes:
Fuente Ubicación
Programación con ActionScript 3.0http://www.adobe.com/go/learn_fl_cs4_programmingAS3_es
10
Referencia del lenguaje y componentes ActionScript 3.0
(incluye AIR)
Guías de inicio rápido de Adobe AIR para Flashhttp://www.adobe.com/go/learn_air_flash_qs_es
Utilización de Flashhttp://www.adobe.com/go/learn_fl_cs4_using_es
Utilización de componentes ActionScript 3.0http://www.adobe.com/go/learn_fl_cs4_as3components_es
http://www.adobe.com/go/learn_flashcs4_langref_es
Encontrará artículos, muestras y presentaciones por expertos tanto de Adobe como de la comunidad en el Centro de
desarrollo de Adobe AIR en http://www.adobe.com/es/devnet/air/. También se puede descargar de ahí Adobe AIR y
software asociado.
Hay una sección específicamente dirigida a los desarrolladores de Flash en http://www.adobe.com/devnet/air/flash/.
Para obtener información sobre la resolución de problemas para su producto y sobre las opciones de asistencia técnica
gratuitas y pagadas, visite el sitio Web del servicio de asistencia técnica de Adobe en
http://www.adobe.com/es/support/. Siga el vínculo bajo Formación para tener acceso a los libros de Adobe Press, una
variedad de recursos de formación, programas de certificación en software de Adobe, y mucho más.
Capítulo 5: Creación de su primera
aplicación de AIR en Flash CS3 o CS4
A continuación se resume la demostración del funcionamiento de Adobe® AIR™. Siga las instrucciones de este tema
para crear y empaquetar una sencilla aplicación “Hello World” de AIR con Adobe® Flash® CS3 Professional.
Si aún no lo ha hecho, descargue e instale la actualización de Adobe AIR para Flash CS3. Para obtener más información
sobre la instalación de Adobe AIR para Flash CS3, consulte “Configuración de Flash CS3 para Adobe AIR” en la
página 4.
Si utiliza Adobe® Flash® CS4 Professional, la compatibilidad con Adobe AIR está integrada, por lo que no es necesario
instalar ningún componente adicional para poder empezar.
Creación de la aplicación Hello World en Flash
Crear una aplicación de Adobe AIR en Flash es muy similar a crear cualquier otro archivo FLA. La diferencia es que
se comienza creando un archivo de Flash (Adobe AIR) desde la pantalla de bienvenida y se finaliza creando la
configuración de aplicación e instalador e instalando la aplicación de AIR. El siguiente procedimiento le guiará en el
proceso de creación de una sencilla aplicación Hello World con Flash CS4 o Flash CS4.
11
Para crear la aplicación Hello World
1 Inicie Flash.
2 En la pantalla de bienvenida, haga clic en Archivo de Flash (Adobe AIR) para crear un archivo FLA vacío con
configuración de publicación de Adobe AIR.
3 Haga clic en Aceptar para responder al diálogo de resumen de edición de Adobe AIR con Flash CS3. Este diálogo
tarda unos segundos en aparecer la primera vez. (Este diálogo no aparece en Flash CS4.)
4 Seleccione la herramienta Texto en el panel Herramientas y cree un campo de texto estático (valor predeterminado)
en el centro del escenario. Dele una anchura suficiente para que pueda contener entre 15 y 20 caracteres.
5 Escriba el texto “Hello World” en el campo de texto.
6 Guarde el archivo y asígnele un nombre (por ejemplo, helloAIR).
Prueba de la aplicación
1 Pulse Ctrl + Intro o seleccione Control -> Probar película para probar la aplicación en Adobe AIR.
2 Para utilizar la función Depurar película, añada primero código ActionScript a la aplicación. Puede intentarlo
rápidamente añadiendo una sentencia trace como ésta:
trace("Running AIR application using Debug Movie");
3 Pulse Ctrl + Mayús + Intro o seleccione Control -> Depurar película para ejecutar la aplicación con Depurar
película.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Creación de su primera aplicación de AIR en Flash CS3 o CS4
4 Seleccione Comandos > AIR - Configuración de aplicación e instalador para abrir el cuadro de diálogo
correspondiente. En Flash CS4, puede abrir este diálogo seleccionando Archivo > Configuración de AIR.
12
5 Firme el paquete de Adobe AIR con el certificado digital con firma automática:
a Haga clic en el botón Definir… en el mensaje de la firma digital para abrir el cuadro de diálogo Firma digital.
b Haga clic en el botón Crear... para abrir el cuadro de diálogo Crear certificado digital con firma automática.
c Rellene los campos Nombre del editor, Unidad de organización, Nombre de organización, Correo electrónico,
País, Contraseña y Confirmar contraseña.
d Especifique el tipo de certificado. La opción Tipo de certificado hace referencia al nivel de seguridad: 1024-RSA
utiliza una clave de 1.024 bits (menos segunda) y 2048-RSA utiliza una clave de 2048 bits (más segura).
e Guarde la información en un archivo de certificado en la opción Guardar como o haciendo clic en el botón
Examinar... para acceder a la ubicación de la carpeta. (Por ejemplo, C:/Temp/mycert.pfx). Cuando haya
terminado, haga clic en Aceptar.
f Flash regresa al cuadro de diálogo Firma digital. La ruta y el nombre de archivo del certificado con firma
automática creado aparece ahora en el cuadro de texto Certificado. Si no es así, introduzca la ruta y el nombre
de archivo o haga clic en el botón Examinar para encontrarlo y seleccionarlo.
g Escriba la misma contraseña en el campo de texto Contraseña del cuadro de diálogo Firma digital que la
contraseña que asignó en el paso C y haga clic en Aceptar. Para obtener más información sobre la firma de
aplicaciones de Adobe AIR, consulte “Firma de la aplicación” en la página 22.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Creación de su primera aplicación de AIR en Flash CS3 o CS4
6 Para crear el archivo aplicación y el instalador, haga clic en el botón Publicar archivo de AIR. Debe ejecutar los
comandos Probar película o Depurar película para crear los archivos SWF y application.xml antes de crear el
archivo de AIR.
7 Para instalar la aplicación, haga doble clic en el archivo de AIR (application.air) en la misma carpeta en la que
guardó la aplicación.
8 Haga clic en el botón Instalar del cuadro de diálogo Instalación de la aplicación.
9 Revise los parámetros de Preferencias de instalación y Ubicación y asegúrese de que la casilla de verificación ‘Iniciar
aplicación tras la instalación’ está seleccionada. A continuación, haga clic en Continuar.
10 Haga clic en Finalizar cuando aparezca el mensaje Instalación completada.
La aplicación Hello World se asemeja a la de la ilustración:
13
Conversión de un archivo FLA en una aplicación de
Adobe AIR
También es posible convertir un archivo FLA existente en una aplicación de AIR. Para obtener más información,
consulte “Configuración de publicación de Adobe AIR” en la página 14. Si utiliza Flash CS4, consulte Publicación para
Adobe AIR en Utilización de Flash.
Capítulo 6: Actualización de Adobe AIR
para Flash CS3 Professional
La actualización de Adobe® AIR™ para Adobe® Flash® CS3 Professional aumenta el entorno de edición para que pueda
crear, depurar y empaquetar aplicaciones de Adobe AIR con Flash. El proceso de creación de una aplicación de Adobe
AIR consiste en crear un archivo FLA de Adobe AIR, establecer la configuración de publicación adecuada, desarrollar
la aplicación y crear los archivos de aplicación y de instalación que permitan implementarla.
Si utiliza Adobe® Flash® CS4 Professional, consulte Publicación para Adobe AIR en Utilización de Flash para obtener
más información sobre la creación de aplicaciones de AIR.
Para obtener más información sobre las API de ActionScript ®3.0 de Adobe AIR que se pueden utilizar en su aplicación,
consulte Referencia del lenguaje y componentes ActionScript 3.0.
Si quiere obtener una lista con las API de ActionScript de Adobe AIR, consulte “Funcionalidad específica de Adobe
AIR” en la página 55.
Nota: para utilizar clases del paquete air.net, arrastre primero el componente ServiceMonitorShim del panel
Componentes al panel Biblioteca y, después, añada la siguiente sentencia
import al código ActionScript 3.0:
14
import air.net.*;
Creación de un archivo de Adobe AIR
Puede crear documentos de archivo de Flash (Adobe AIR) desde la pantalla de bienvenida de Flash, o bien crear un
archivo de Flash (ActionScript™ 3.0) y convertirlo a archivo de Adobe AIR desde el cuadro de diálogo Configuración
de publicación. No es posible crear un archivo de Adobe AIR desde el cuadro de diálogo Nuevo documento (Archivo
> Nuevo). Para obtener más información sobre la conversión de un archivo FLA en Adobe AIR, consulte
“Configuración de publicación de Adobe AIR” en la página 14.
1 Inicie Flash o, si ya lo ha iniciado, cierre todos los documentos abiertos para volver a la pantalla de bienvenida.
Nota: si ha desactivado la aparición de la pantalla de bienvenida de Flash, puede volver a visualizarla si selecciona
Edición > Preferencias y, después, Pantalla de bienvenida en el menú Al iniciar, en la categoría General.
2 En la pantalla de bienvenida, haga clic en Archivo de Flash (Adobe AIR).
Aparecerá un mensaje de alerta para indicar cómo acceder a la configuración de la aplicación de Adobe AIR y cómo
acceder a la documentación de la Ayuda. Si no desea que aparezca este mensaje en futuras ocasiones, seleccione No
volver a mostrar. Debe tener en cuenta que no será posible volver a activar la aparición de este cuadro.
Configuración de publicación de Adobe AIR
Utilice la configuración de publicación de Flash para examinar o modificar la configuración de un archivo de AIR o
para convertir un archivo de Flash (ActionScript 3.0) en un archivo de Flash (Adobe AIR).
Visualización de la configuración de publicación de Adobe AIR
1 Desde la pantalla de bienvenida de Flash, abra un documento Archivo de Flash (Adobe AIR).
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
2 Seleccione Archivo > Configuración de publicación y haga clic en la ficha Flash para ver la configuración de
publicación de Adobe AIR.
Adobe AIR 1.0 está seleccionado automáticamente en el menú Versión cuando se abre un documento de Adobe
AIR. La versión de ActionScript™ se establece automáticamente en ActionScript 3.0. La configuración local de
seguridad de reproducción se obvia, ya que es irrelevante para un archivo SWF de AIR.
Si ha abierto un archivo FLA de Flash, puede convertirlo en archivo de AIR de Flash modificando su configuración de
publicación.
Conversión de un archivo FLA de Flash en un archivo de AIR de Flash mediante el cuadro de diálogo
Configuración de publicación
1 Realice uno de los siguientes pasos:
• Abra un archivo FLA existente.
• Utilice la pantalla de bienvenida o seleccione Archivo > Nuevo para crear un nuevo archivo FLA.
2 Seleccione Archivo > Configuración de publicación.
3 En la ficha Flash, seleccione Adobe AIR 1.0 en el menú Versión.
La opción de versión de ActionScript está desactivada porque ActionScript 3.0 es la única opción válida para un
archivo de AIR.
15
El resto de opciones predeterminadas son las mismas para un archivo FLA o uno de Adobe AIR.
4 Haga clic en el botón Publicar y luego en Aceptar para cerrar el cuadro de diálogo Configuración de publicación.
Si está seleccionada la herramienta Selección, el inspector de propiedades ahora indica que el destino del
reproductor es Adobe AIR 1.
Nota: si elige el perfil Adobe AIR 1.0, Flash añade automáticamente la ubicación del archivo AIR playerglobal.swc a
la variable de entorno Classpath. El archivo AIR playerglobal.swc permite utilizar las API de AIR de ActionScript. Sin
embargo, si cambia de Adobe AIR 1 a Adobe® Flash® Player 9, Flash no vuelve automáticamente al perfil
predeterminado ni modifica la configuración de Classpath para que utilice el archivo playerglobal.swc para Flash
Player 9. Si cambia la configuración de publicación de Adobe AIR 1 a Flash Player 9, debe cambiar también el perfil
de publicación a Predeterminado.
Para obtener información adicional sobre el cuadro de diálogo Configuración de publicación, consulte el manual
Utilización de Flash en www.adobe.com/go/learn_fl_using_es.
Conversión de un archivo FLA de Flash en una aplicación AIR de Flash mediante el menú Comandos
1 Abra el archivo FLA de Flash.
2 Si va a abrir un archivo de Flash (ActionScript 3.0) nuevo, guárdelo. De no hacerlo, recibirá una advertencia cuando
intente acceder al siguiente paso.
3 Seleccione Comandos > AIR - Configuración de aplicación e instalador.
Aparecerá mensaje de alerta que pregunta si desea convertir el archivo a la configuración de publicación de Adobe AIR.
4 Haga clic en Aceptar para convertir el archivo FLA en una configuración de publicación de Adobe AIR. Aparecerá
el cuadro de diálogo AIR - Configuración de aplicación e instalador.
Para obtener información sobre el cuadro de diálogo AIR - Configuración de aplicación e instalador, consulte
“Creación de archivos de aplicación e instalador de AIR” en la página 16.
Puede utilizar los comandos Probar película, Depurar película y Crear archivo de AIR en el archivo FLA de AIR
convertido.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
Vista previa de una aplicación de Adobe AIR
Puede obtener la vista previa de un archivo SWF de Adobe AIR como lo haría en la ventana de la aplicación de AIR.
Consultar una vista previa resulta útil si se quieren ver los aspectos visibles de la aplicación sin tener que empaquetarla
ni instalarla.
1 Es importante comprobar que se ha definido la configuración de publicación para una aplicación de Adobe AIR.
Para obtener más información, consulte “Configuración de publicación de Adobe AIR” en la página 14.
2 Seleccione Control > Probar película o pulse Control+Intro.
Si no ha definido la configuración de la aplicación desde el cuadro de diálogo AIR - Configuración de aplicación e
instalador, Flash genera un archivo descriptor predeterminado de la aplicación (swfname-app.xml) en la misma
carpeta en la que se escribe el archivo SWF. Si ha definido la configuración de la aplicación desde el cuadro de
diálogo AIR - Configuración de aplicación e instalador, el archivo descriptor de la aplicación reflejará dicha
configuración.
Depuración de una aplicación de Adobe AIR
El archivo SWF de Adobe AIR se puede depurar como del mismo modo que un archivo SWF de ActionScript 3.0 de
Flash Player 9 (con la excepción de la depuración remota).
16
1 Asegúrese de haber definido la configuración de publicación de Adobe AIR.
2 Añada código ActionScript al panel Acciones (Ventana > Acciones). Para realizar pruebas, basta con añadir una
sentencia
trace("My application is running");
3 Seleccione Depurar > Depurar película o pulse la combinación de teclas Control+Mayús+Intro.
Flash inicia el depurador de ActionScript y exporta el archivo SWF con la información de depuración.
Si no ha definido la configuración de la aplicación desde el cuadro de diálogo AIR - configuración de aplicación e
instalador, Flash genera un archivo descriptor predeterminado de la aplicación (swfname-app.xml) en la misma
carpeta en la que se escribe el archivo SWF. Si ha definido la configuración de la aplicación desde el cuadro de
diálogo AIR - Configuración de aplicación e instalador, el archivo descriptor de la aplicación reflejará dicha
configuración.
Cuando selecciona Depurar > Depurar película p pulsa la combinación de teclas Control+Mayús+Intro para
depurar la aplicación, Flash muestra una alerta si ésta no contiene ningún código ActionScript.
trace() como la siguiente en el panel Acciones (en el primer fotograma de la línea de tiempo):
Creación de archivos de aplicación e instalador de AIR
Una vez finalizada la aplicación, puede crear los archivos de aplicación e instalador de AIR para implementarla. Adobe
AIR añade dos nuevas opciones de menú al menú Comandos de Flash: AIR - Configuración de aplicación e instalador
y AIR - Crear archivo de AIR. Una vez creada la configuración de aplicación e instalador de AIR, puede utilizar la
opción AIR - Crear archivo de AIR para crear de nuevo el archivo de AIR (.air), pero con la configuración existente.
Creación de archivos de aplicación e instalador de Adobe
1 En Flash, abra la página o el grupo de páginas que forman la aplicación de Adobe AIR.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
2 Guarde el archivo FLA de Adobe AIR antes de abrir el cuadro de diálogo AIR - Configuración de aplicación e
instalador.
3 Seleccione Comandos > AIR - Configuración de aplicación e instalador.
4 Rellene el cuadro de diálogo AIR - Configuración de aplicación e instalador y haga clic en Publicar archivo de AIR.
Al hacer clic en el botón Publicar archivo de AIR, se empaquetan los siguientes archivos: el archivo FLA, el archivo
SWF, el archivo descriptor de la aplicación, los archivos de iconos de la aplicación y los archivos presentes en el
cuadro de texto Archivos incluidos. Si aún no ha creado un certificado digital, Flash muestra el cuadro de diálogo
Firma digital al hacer clic en el botón Publicar archivo de AIR.
El cuadro de diálogo AIR - Configuración de aplicación e instalador está dividido en dos secciones: Configuración de
la aplicación y Configuración del instalador. Para obtener más información sobre estas configuraciones, consulte las
siguientes secciones.
Configuración de la aplicación
La sección Configuración de la aplicación del cuadro de diálogo AIR - Configuración de aplicación e instalador tiene
las siguientes opciones:
Nombre de archivo Nombre del archivo principal de la aplicación. Utiliza el nombre del archivo SWF como nombre
predeterminado.
17
Nombre Nombre utilizado por el instalador para generar el nombre de archivo y la carpeta de la aplicación. El nombre
sólo puede contener caracteres válidos admitidos en nombres de archivo y de carpeta. Utiliza el nombre del archivo
SWF como nombre predeterminado.
Versión Opcional. Especifica el número de versión de la aplicación. De forma predeterminada, está vacío.
ID Identifica la aplicación con un ID exclusivo. Si lo desea, puede cambiar el ID predeterminado. No utilice espacios
ni caracteres especiales en el ID. Sólo se admiten como caracteres válidos: 0-9, a-z, A-Z, . (punto) y - (guión), de 1 a
212 caracteres de longitud. Su valor predeterminado es
Descripción Opcional. Permite introducir una descripción de la aplicación para mostrarla mientras el usuario la
com.adobe.example.nombre_aplicación.
instala. De forma predeterminada, está vacío.
Copyright Opcional. Permite introducir un aviso de copyright para mostrarlo mientras el usuario instala la aplicación.
Estilo de ventana Especifica el estilo de ventana (o del fondo cromático) que se utiliza en la interfaz de usuario cuando
éste ejecuta la aplicación en su ordenador. Puede especificar la opción Fondo cromático del sistema. Hace referencia
al estilo visual utilizado por el sistema operativo. También puede elegir Fondo cromático personalizado (opaco) o
Fondo cromático personalizado (transparente). Para no mostrar el fondo cromático del sistema de la aplicación,
seleccione Ninguno. El fondo cromático del sistema está presente en la aplicación junto con los controles de ventanas
estándar del sistema operativo. El fondo cromático personalizado (opaco) elimina los controles estándar del sistema y
permite crear controles propios para la aplicación. (El fondo cromático personalizado se crea directamente en el
archivo FLA.) El fondo cromático personalizado (transparente) es como el personalizado (opaco), pero añade
funcionalidad de transparencia en los bordes de la página. Esta funcionalidad permite que las ventanas de la aplicación
no tengan forma cuadrada o rectangular.
Icono Opcional. Permite especificar el icono de la aplicación. El icono aparece tras instalar la aplicación y ejecutarla
en Adobe AIR. Puede elegir entre cuatro tamaños de icono distintos (128, 48, 32 y 16 píxeles) para que se visualice
correctamente en las cuatro vistas en las que aparece. Por ejemplo, el icono puede aparecer en el explorador de archivos
como miniatura, detalle o título. También puede aparecer como icono de escritorio y en el título de una ventana de
aplicación de AIR o en otros lugares.
La imagen predeterminada del icono es el icono de muestra de aplicación de AIR si no se especifica ninguna otra.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
Para especificar un icono, haga clic en el botón Seleccionar imágenes de icono en el cuadro de diálogo AIR Configuración de aplicación e instalador. En el cuadro de diálogo Imágenes de icono, haga clic en la carpeta de cada
tamaño de icono y seleccione el archivo que quiera utilizar. Los archivos deben estar en formato PNG (Portable
Network Graphics).
En la siguiente ilustración se muestra el cuadro de diálogo Imágenes de icono con los iconos de la aplicación
predeterminados de Adobe AIR.
18
Especificación de distintos tamaños de imagen de icono de la aplicación
Si especifica una imagen, debe tener el tamaño exacto (128x128, 48x48, 32x32 o 16x16). Si no proporciona una imagen
con tamaño de icono concreto, Adobe AIR la ajusta a una de las imágenes proporcionadas y crea la imagen.
Configuración avanzada
El botón Configuración del cuadro de diálogo AIR - Configuración de aplicación e instalador permite especificar la
configuración avanzada del archivo descriptor de la aplicación. Al hacer clic en el botón Configuración, aparece el
cuadro de diálogo Configuración avanzada.
En el cuadro de diálogo Configuración avanzada se puede especificar cualquier tipo de archivo asociado que deba
manejar la aplicación. Por ejemplo, si quiere que la aplicación sea la aplicación principal para gestionar archivos
HTML, debe especificarlo en el cuadro de texto Tipos de archivo asociados.
También puede especificar la configuración de los siguientes aspectos de la aplicación:
• El tamaño y la posición de la ventana inicial
• La carpeta de instalación de la aplicación
• La carpeta del menú Programa en la que se coloca la aplicación.
El cuadro de diálogo tiene las opciones siguientes:
Tipos de archivo asociados Le permite especificar tipos de archivos asociados que la aplicación de AIR vaya a
gestionar. Haga clic en el botón Más (+) para añadir un nuevo tipo de archivo en el cuadro de texto. Al hacer clic en el
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
botón Más, aparece el cuadro de diálogo Configuración de tipo de archivo. Si hace clic en el botón Menos (-), eliminará
el elemento seleccionado en el cuadro de texto. Si hace clic en el botón Lápiz, se abre el cuadro de diálogo
Configuración de tipo de archivo para que pueda editar el elemento seleccionado en el cuadro de texto. De forma
predeterminada, los botones Menos (-) y Lápiz aparecen desactivados. Al seleccionar un elemento en el cuadro de
texto, se activan los botones Menos (-) y Lápiz para poder eliminar o editar el elemento. El valor predeterminado del
cuadro de texto en Ninguno.
Para obtener más información sobre la configuración de tipos de archivo asociados, consulte “Configuración de tipo
de archivo” en la página 19.
Configuración de la ventana inicial Permite especifica la configuración de tamaño y de posición de la ventana inicial
de la aplicación.
• Anchura: especifica la anchura inicial de la ventana, en píxeles. De forma predeterminada, el campo está vacío.
• Altura: especifica la altura inicial de la ventana, en píxeles. De forma predeterminada, el campo está vacío.
• X: especifica la posición horizontal inicial de la ventana, en píxeles. De forma predeterminada, el campo está vacío.
• Y: especifica la posición vertical inicial de la ventana, en píxeles. De forma predeterminada, el campo está vacío.
• Anchura máxima y Altura máxima: especifican el tamaño máximo de la ventana, en píxeles. De forma
predeterminada, estos campos están vacíos.
• Anchura mínima y Altura mínima: especifican el tamaño mínimo de la ventana, en píxeles. De forma
predeterminada, estos campos están vacíos.
• Se puede maximizar: permite especificar si el usuario puede maximizar o no la ventana. De forma predeterminada,
esta opción está seleccionada (o es true).
• Se puede minimizar: permite especificar si el usuario puede minimizar o no la ventana. De forma predeterminada,
esta opción está seleccionada (o es true).
• Redimensionable: permite especificar si el usuario puede cambiar el tamaño de la ventana. Si esta opción no se
selecciona, los campos Anchura máxima, Altura máxima, Anchura mínima y Altura mínima aparecen
desactivados. De forma predeterminada, esta opción está seleccionada (o es true).
• Visible: permite especificar si la ventana de la aplicación está visible inicialmente. De forma predeterminada, la
opción está seleccionada (o es true).
Otras opciones Permite especificar la siguiente información adicional relacionada con la instalación:
19
• Carpeta de instalación: especifica la carpeta en la que se instala la aplicación.
• Carpeta del menú Programa: especifica el nombre de la carpeta del menú Programa de la aplicación.
• Usar UI personalizada para actualizaciones: especifica qué ocurre cuando un usuario abre un archivo de AIR para
una aplicación ya instalada. De forma predeterminada, AIR abre un cuadro de diálogo donde el usuario puede
actualizar la versión instalada con la versión del archivo de AIR. Si no quiere que el usuario pueda tomar esta
decisión y desea tener control total sobre la aplicación y sus actualizaciones, seleccione esta opción. Al seleccionar
esta opción, se anula el comportamiento predeterminado y se permite que la aplicación controle sus propias
actualizaciones.
Para obtener más información sobre la actualización de una aplicación de AIR mediante programación, consulte
“Actualización de aplicaciones de AIR” en la página 331.
Configuración de tipo de archivo
Flash muestra el cuadro de diálogo Configuración de tipo de archivo al hacer clic en el botón Más (+) o en el botón
Lápiz en el cuadro de diálogo Configuración avanzada, o bien al añadir o editar tipos de archivo asociados para la
aplicación.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
Los dos únicos campos necesarios de este cuadro de diálogo son Nombre y Extensión. Si hace clic en Aceptar sin haber
rellenado estos campos, Flash mostrará un cuadro de diálogo de error.
Puede especificar las opciones siguientes para un tipo de archivo asociado:
Nombre El nombre del tipo de archivo (por ejemplo, Lenguaje de marcado de hipertexto, Archivo de texto o
Ejemplo).
Extensión La extensión del nombre de archivo (por ejemplo, html, txt o xmpl); puede contener hasta 39 caracteres
alfanuméricos básicos, (A-Za-z0-9) sin punto inicial.
Descripción Opcional. Una descripción del tipo de archivo (por ejemplo, Archivo de vídeo de Adobe).
Tipo de contenido Opcional. Especifica el tipo MIME para el archivo.
Configuración de icono de tipo de archivo Opcional. Permite especificar un icono asociado al tipo de archivo. Puede
elegir entre cuatro tamaños de icono distintos (128x128, 48x48, 32x32 y 16x16 píxeles) para que se visualice
correctamente en las cuatro vistas en las que aparece. Por ejemplo, el icono puede aparecer en el explorador de archivos
como miniatura, detalle o título.
Si quiere especificar una imagen, ésta debe tener el tamaño indicado. Si no especifica ningún archivo para un tamaño
concreto, AIR utiliza la imagen con tamaño más parecido y la escala para que se ajuste al caso concreto.
Para especificar un icono, puede hacer clic en la carpeta del tamaño de icono y seleccionar un archivo de icono, o bien
facilitar la ruta de acceso y el nombre de archivo del archivo de icono en el cuadro de texto que aparece junto al
mensaje. El archivo de icono debe estar en formato PNG.
20
Una vez creado el nuevo tipo de archivo, aparece en el cuadro de lista Tipo de archivo del cuadro de diálogo
Configuración avanzada.
Configuración del archivo descriptor de aplicación
La configuración definida para la aplicación se guarda en el archivo nombre_aplicación-app.xml. Sin embargo, si lo
desea, puede indicar a Flash que utilice un archivo descriptor de aplicación personalizado.
Usar archivo descriptor de aplicación personalizado Permite buscar un archivo descriptor de aplicación
personalizado. Si selecciona la opción Usar archivo descriptor de aplicación personalizado, la sección Configuración
de aplicación del cuadro de diálogo se desactiva. Para especificar la ubicación del archivo descriptor de aplicación
personalizado, puede introducirla en el campo de texto situado debajo de Usar archivo descriptor de aplicación
personalizado, o bien hacer clic en el icono de la carpeta y acceder a la ubicación. Para obtener más información sobre
el archivo descriptor de aplicación, consulte “Creación de un archivo descriptor de aplicación personalizado” en la
página 21.
Configuración del instalador
La segunda sección del cuadro de diálogo AIR - Configuración de aplicación e instalador contiene parámetros
relacionados con la instalación de la aplicación.
Firma digital Todas las aplicaciones de Adobe AIR deben estar firmadas para poder instalarse en otro sistema. Para
obtener más información sobre la asignación de una firma digital a una aplicación Flash de Adobe AIR, consulte
“Firma de la aplicación” en la página 22.
Destino Especifica la ubicación en la que se guarda el archivo de AIR. La ubicación predeterminada es el directorio
en el que se guardó el archivo FLA. Haga clic en el icono de la carpeta para seleccionar una ubicación diferente. El
nombre del paquete predeterminado es el nombre de la aplicación con la extensión de nombre de archivo .air.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
Archivos/Carpetas incluidos Especifica qué archivos y carpetas adicionales se incluyen en la aplicación. Haga clic en el
botón Más (+) para añadir archivos y en el botón de la carpeta para añadir carpetas. Para eliminar un archivo o una
carpeta de la lista, seleccione el elemento correspondiente y haga clic en el botón Menos (-).
De forma predeterminada, el archivo descriptor de aplicación y el archivo SWF principal se añaden automáticamente
a la lista del paquete. La lista del paquete muestra estos archivos aunque no se haya publicado aún el archivo FLA de
Adobe AIR. La lista del paquete muestra los archivos y las carpetas con una estructura simple. No se muestran los
archivos de cada carpeta; los nombres completos de las rutas sí se muestran, aunque pueden aparecer cortados.
La lista no incluye los archivos de icono. Cuando Flash empaqueta los archivos, copia los archivos de icono en una
carpeta temporal relacionada con la ubicación del archivo SWF. Flash elimina la carpeta una vez finalizado el paquete.
¿No consigue crear los archivos de la aplicación y del instalador?
Los archivos de la aplicación y del instalador no se pueden crear en los casos siguientes:
• La cadena del identificador de la aplicación no tiene una longitud correcta o contiene caracteres no válidos. La
cadena del identificador de la aplicación puede tener entre 1 y 212 caracteres dentro del rango 0-9, a-z, A-Z, .
(punto), - (guión).
• No existen los archivos de la lista del instalador.
• Los tamaños de los archivos de icono personalizados son incorrectos.
• La carpeta de destino de AIR no tiene acceso de escritura.
• No ha firmado la aplicación o no ha especificado que se trata de una aplicación de Adobe AIR que se firmará más
adelante.
21
Creación de un archivo descriptor de aplicación
personalizado
El archivo descriptor de aplicación es un archivo XML que se puede editar con un simple editor de texto. Para crear
un archivo descriptor de aplicación predeterminado, edite los valores para especificar los que desee. A continuación
se muestran los valores predeterminados:
• id = com.adobe.example.nombreswf
• fileName = nombreswf
• name = nombreswf
• version = 1.0
• description = vacío
• copyright = vacío
• initialWindow
• title = name
• content = nombreswf.swf
• systemChrome = standard, type = normal
• transparent = false
• visible = true
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
• icon
• image128x128 = icons/AIRApp_128.png
• image48x48 = icons/AIRApp_48.png
• image32x32 = icons/AIRApp_32.png
• image16x16 = icons/AIRApp_16.png
• customUpdateUI = false
• allowBrowserInvocation = false
Para obtener más información sobre el archivo descriptor de aplicación, consulte “Configuración de las
propiedades de una aplicación de AIR” en la página 45.
Firma de la aplicación
Todas las aplicaciones de Adobe AIR deben estar firmadas para poder instalarse en otro sistema. Sin embargo, Flash
permite crear archivos instaladores de Adobe AIR sin firmar para que la aplicación se pueda firmar más adelante. Estos
archivos de instalador sin firmar de Adobe AIR reciben el nombre de paquete AIRI. Esta funcionalidad permite
manejar situaciones en las que el certificado se encuentra en otro ordenador o en las que la firma se gestiona
independientemente del desarrollo de la aplicación.
22
Firma de una aplicación de Adobe AIR con un certificado de firma precomprado en una autoridad emisora de
certificados raíz
1 Haga clic en el botón Definir de Firma digital en el cuadro de diálogo AIR - Configuración de aplicación e
instalador. Se abre el cuadro de diálogo Firma digital.
Este cuadro de diálogo tiene dos botones de opción que permiten firmar la aplicación de Adobe AIR con un
certificado digital o preparar un paquete AIRI. Si decide firmar la aplicación de AIR, puede utilizar para ello un
certificado digital emitido por una entidad emisora de certificados raíz o crear un certificado con firma automática.
Un certificado con firma automática es fácil de crear, pero no es tan fiable como uno emitido por una entidad de
certificados raíz.
Cuadro de diálogo Firma digital. Permite firmar una aplicación de AIR
2 Seleccione un archivo de certificado en el menú o haga clic en el botón Examinar para buscar uno.
3 Seleccione el certificado.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Actualización de Adobe AIR para Flash CS3 Professional
4 Escriba la contraseña.
5 Haga clic en Aceptar.
Para obtener más información sobre el proceso de firma de la aplicación de AIR, consulte “Firma digital de archivos
de AIR” en la página 324.
Creación de un certificado digital con firma automática
1 Haga clic en el botón Crear. Se abrirá el cuadro de diálogo Crear certificado digital con firma automática.
2 Rellene los campos Nombre del editor, Unidad de organización, Nombre de organización, País, Contraseña y
Confirmar contraseña.
3 Especifique el tipo de certificado.
La opción Tipo hace referencia al nivel de seguridad del certificado: 1024-RSA utiliza una clave de 1.024 bits (menos
segura), mientras que 2048-RSA utiliza una clave de 2.048 bits (más segura).
4 Guarde la información en un archivo de certificado en la opción Guardar como o haciendo clic en el botón
Examinar para acceder a la ubicación de la carpeta.
5 Haga clic en Aceptar.
6 En el cuadro de diálogo Firma digital, escriba la contraseña asignada en el segundo paso de este procedimiento y
haga clic en Aceptar.
23
Una vez definido el certificado digital, el botón Definir pasa a ser Cambiar.
Para que Flash recuerde la contraseña utilizada en esta sesión, haga clic en Recordar contraseña para esta sesión.
Si la opción Marca de fecha no está seleccionada al hacer clic en Aceptar, aparece un cuadro de diálogo para advertir
que la aplicación no se instalará correctamente si el certificado digital vence. Si hace clic en Sí en la advertencia, la
marca de fecha se desactivará. Si hace clic en No, la opción Marca de fecha se selecciona automáticamente y se activa.
Para obtener más información sobre la creación de un certificado digital con firma automática, consulte “Firma digital
de archivos de AIR” en la página 324.
También es posible crear una aplicación intermedia de AIR (AIRI) sin firma digital. El usuario no podrá instalar la
aplicación en su escritorio hasta que no haya añadido una firma digital.
Preparar un paquete AIRI para firmarlo más tarde
❖ En el cuadro de diálogo Firma digital, seleccione Preparar un archivo de AIR Intermediate (AIRI) que se firmará
más tarde y haga clic en Aceptar.
El estado de la firma digital cambia para indicar que ha escogido preparar un paquete AIRI para firmarlo más tarde
y el botón Definir pasa a Cambiar.
Capítulo 7: Seguridad en AIR
En este capítulo se describen los temas de seguridad que se deben tener en cuenta cuando se desarrolla una aplicación
de AIR.
Aspectos básicos de la seguridad de AIR
Las aplicaciones de AIR se ejecutan con los mismos privilegios de usuario que las aplicaciones nativas. En general, estos
privilegios permiten un amplio acceso a las prestaciones del sistema operativo como leer y escribir archivos, iniciar
aplicaciones, dibujar en la pantalla y la comunicación con la red. Las restricciones del sistema operativo que se aplican
a las aplicaciones nativas, como privilegios específicos del usuario, se aplican de igual manera a las aplicaciones de AIR.
Aunque el modelo de seguridad de Adobe® AIR™ es una evolución del modelo de seguridad de Adobe® Flash® Player,
el contrato de seguridad es diferente del contrato de seguridad que se aplica al contenido en un navegador. Este
contrato ofrece a los desarrolladores un medio seguro de funcionalidad más amplia para experiencias enriquecedoras
con libertades que serían inapropiadas para una aplicación basada en un navegador.
24
Las aplicaciones de AIR están escritas usando ya sea código de bytes compilado (contenido SWF) o script interpretado
(JavaScript, HTML) para que el motor de ejecución proporcione la administración de la memoria. Esto reduce las
posibilidades de que las aplicaciones de AIR se vean afectadas por las vulnerabilidades relacionadas con la
administración de la memoria, como desbordes de búfer y corrupción de memoria. Éstas son algunas de las
vulnerabilidades más comunes que afectan a las aplicaciones de escritorio escritas en código nativo.
Instalación y actualizaciones
Las aplicaciones de AIR se distribuyen a través de los archivos de instalación de AIR que usan la extensión air. Cuando
se instala Adobe AIR y se abre un archivo de instalación de AIR, el motor de ejecución administra el proceso de
instalación.
Nota: los desarrolladores pueden especificar una versión y un nombre de aplicación y un origen de editor, pero no se
puede modificar el flujo de trabajo de instalación de la aplicación inicial. Esta restricción es una ventaja para los usuarios
porque todas las aplicaciones de AIR comparten un procedimiento de instalación seguro, optimizado y coherente
administrado por el motor de ejecución. Si es necesario personalizar la aplicación, se puede hacer cuando se ejecuta la
aplicación por primera vez.
Ubicación de la instalación del motor de ejecución
Las aplicaciones de AIR primero requieren la instalación del motor de ejecución en el equipo del usuario, al igual que
los archivos SWF primero requieren la instalación del plug-in de navegador de Flash Player.
El motor de ejecución se instala en la siguiente ubicación en el equipo del usuario:
• Mac OS: /Library/Frameworks/
• Windows: C:\Archivos de programa\Archivos comunes\Adobe AIR
• Linux: /opt/Adobe AIR/
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
En Mac OS, para instalar una versión actualizada de una aplicación, el usuario debe contar con adecuados privilegios
del sistema para instalar en el directorio de la aplicación. En Windows y Linux, el usuario debe disponer de privilegios
de administrador.
El motor de ejecución se puede instalar de dos maneras: usando la función de instalación integrada (instalando
directamente desde un navegador Web) o a través de una instalación manual. Para más información, consulte
“Distribución, instalación y ejecución de aplicaciones de AIR” en la página 314.
Instalación integrada (motor de ejecución y aplicación)
La función de instalación integrada proporciona a los desarrolladores una experiencia de instalación optimizada para
los usuarios que aún no tienen instalado Adobe AIR. En el método de instalación integrada, el desarrollador crea un
archivo SWF que presenta la aplicación para instalar. Cuando un usuario hace clic en el archivo SWF para instalar la
aplicación, el archivo SWF intenta detectar el motor de ejecución. Si el motor de ejecución no se puede detectar se
instala, y el motor de ejecución se activa de forma inmediata con el proceso de instalación para la aplicación del
desarrollador.
Instalación manual
Como alternativa, el usuario puede descargar e instalar manualmente el motor de ejecución antes de abrir un archivo
de AIR. Entonces el desarrollador puede distribuir un archivo de AIR mediante diferentes medios (por ejemplo, a
través de correo electrónico o un vínculo HTML en un sitio Web). Cuando se abre el archivo de AIR, el motor de
ejecución comienza el proceso de instalación de la aplicación.
25
Para más información sobre este proceso, consulte “Distribución, instalación y ejecución de aplicaciones de AIR” en
la página 314
Flujo de instalación de la aplicación
El modelo de seguridad de AIR permite que los usuarios decidan si quieren instalar una aplicación de AIR. La
instalación de AIR proporciona varias mejoras con respecto a las tecnologías de instalación de las aplicaciones nativas
que ayuda a los usuarios a la hora de tomar decisiones:
• El motor de ejecución proporciona una experiencia de instalación coherente en todos los sistemas operativos, aun
cuando una aplicación de AIR se instala desde un vínculo en un navegador Web. La mayoría de las experiencias de
instalación de las aplicaciones nativas dependen del navegador u otra aplicación para proporcionar información de
seguridad, si la hay.
• La instalación de la aplicación de AIR identifica el origen de la aplicación y la información sobre los privilegios
disponibles para la aplicación (si el usuario permite continuar la instalación).
• El motor de ejecución administra el proceso de instalación de una aplicación de AIR. Una aplicación de AIR no
puede manipular el proceso de instalación que utiliza el motor de ejecución.
En general, los usuarios no deberían instalar ninguna aplicación de escritorio que proviene de un origen que no
conocen o que no se puede verificar. La comprobación de veracidad sobre la seguridad de las aplicaciones nativas es
igual para las aplicaciones de AIR así como para otras aplicaciones que se instalan.
Destino de la aplicación
El directorio de instalación se puede establecer usando una de las siguientes dos opciones:
1 El usuario personaliza el destino durante la instalación. La aplicación se instala donde lo especifica el usuario.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
2 Si el usuario no cambia el destino de la instalación, la aplicación se instala en la ruta predeterminada como lo
Seguridad en AIR
determina el motor de ejecución:
• Mac OS: ~/Aplicaciones/
• Windows XP y anterior: C:\Archivos de programa\
• Windows Vista: ~/Aplicaciones/
• Linux: /opt/
Si el desarrollador especifica un parámetro
installFolder en el archivo descriptor de la aplicación, la aplicación
se instala en una ruta secundaria de este directorio.
Sistema de archivos de AIR
El proceso de instalación para las aplicaciones de AIR copia todos los archivos que el desarrollador ha incluido en el
archivo de instalación de AIR en el equipo local del usuario. La aplicación instalada se compone de:
• Windows: un directorio que contiene todos los archivos incluidos en el archivo de instalación de AIR. Asimismo,
el motor de ejecución crea un archivo exe durante la instalación de la aplicación de AIR.
• Linux: un directorio que contiene todos los archivos incluidos en el archivo de instalación de AIR. Asimismo, el
motor de ejecución crea un archivo bin durante la instalación de la aplicación de AIR.
• Mac OS: un archivo app que contiene todo el contenido del archivo de instalación de AIR. Se puede examinar
usando la opción "Show Package Contents" en Finder. El motor de ejecución crea este archivo app como parte de
la instalación de la aplicación de AIR.
26
Una aplicación de AIR se ejecuta del siguiente modo:
• Windows: ejecutando el archivo .exe en la carpeta de instalación, o un método abreviado que corresponde a este
archivo (como un método abreviado en el menú Inicio o en el escritorio)
• Linux: iniciando el archivo .bin en la carpeta de instalación, seleccionando la aplicación en el menú de aplicaciones
o realizando la ejecución a partir de un alias o acceso directo en el escritorio.
• Mac OS: ejecutando el archivo .app o un alias que apunta al mismo.
Asimismo, el sistema de archivos de la aplicación incluye subdirectorios relacionados con la función de la aplicación.
Por ejemplo, la información escrita en el almacenamiento local cifrado se guarda en un subdirectorio en un directorio
nombrado a partir del identificador de la aplicación.
Almacenamiento de la aplicación de AIR
Las aplicaciones de AIR tienen privilegios para escribir en cualquier ubicación en el disco duro del usuario; sin
embargo, se recomienda que los desarrolladores utilicen la ruta
relacionado con su aplicación. Los archivos que se escriben a
una ubicación estándar dependiendo del sistema operativo del usuario:
• En Mac OS: el directorio de almacenamiento de una aplicación es <appData>/<appId>/Local Store/ donde
<appData> es la “carpeta de preferencias” del usuario, normalmente
/Usuarios/<usuario>/Librería/Preferences
• En Windows: el directorio de almacenamiento de una aplicación es <appData>\<appId>\Local Store\ , donde
<appData> es la “Carpeta especial” CSIDL_APPDATA del usuario, normalmente: C:\Documents and
Settings\<user>\Application Data
• En Linux: <appData>/<appID>/Local Store/, donde <appData> es /home/<user>/.appdata
app-storage:/ para el almacenamiento local
app-storage:/ desde una aplicación se encuentran en
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Puede acceder al directorio de almacenamiento de la aplicación a través de la propiedad
air.File.applicationStorageDirectory. Puede acceder al contenido usando el método resolvePath() de la
clase File. Para más información, consulte “Trabajo con el sistema de archivos” en la página 107.
Seguridad en AIR
Actualización de Adobe AIR
Cuando el usuario instala una aplicación de AIR que requiere una versión actualizada del motor de ejecución, el
tiempo de ejecución automáticamente instala la actualización del motor de ejecución requerida.
Para actualizar el motor de ejecución, el usuario debe tener privilegios administrativos para el equipo.
Actualización de aplicaciones de AIR
El desarrollo y la implementación de actualizaciones de software es uno de los desafíos más grandes de seguridad que
enfrentan las aplicaciones de código nativo. La API de AIR proporciona un mecanismo para mejorar esto: se puede
invocar el método
requiere una actualización, el archivo de AIR se descarga, se instala y la aplicación se reinicia. Los desarrolladores
pueden usar esta clase no sólo para proporcionar nueva funcionalidad sino también para responder a las
vulnerabilidades potenciales de seguridad.
Nota: los desarrolladores pueden especificar la versión de una aplicación configurando la propiedad version del archivo
descriptor de la aplicación. AIR no interpreta la cadena de versión de ningún modo. Por consiguiente, la versión “3.0” no
significa que sea más actual que la versión “2.0.” Depende del desarrollador mantener el significado de las versiones. Para
más información, consulte “Definición de propiedades en el archivo descriptor de la aplicación” en la página 46.
Updater.update() durante el inicio para verificar la ubicación remota de un archivo de AIR. Si se
27
Desinstalación de una aplicación de AIR
Un usuario puede desinstalar una aplicación de AIR:
• En Windows: usando el panel Agregar o quitar programas para quitar la aplicación.
• En Mac OS: eliminando el archivo app de la ubicación de instalación.
Al quitar una aplicación de AIR se quitan todos los archivos en el directorio de la aplicación. Sin embargo, no se quitan
los archivos que la aplicación haya escrito fuera del directorio de la aplicación. Cuando se quitan las aplicaciones de
AIR no se deshacen los cambios que la aplicación de AIR ha realizado en los archivos fuera del directorio de la
aplicación.
Desinstalación de Adobe AIR
Se puede desinstalar AIR de la siguiente manera:
• En Windows: ejecutando Agregar o quitar programas del Panel de control, seleccionando Adobe AIR y “Quitar”.
• En Mac OS: ejecutando la aplicación Uninstaller de Adobe AIR en el directorio de aplicaciones.
Parámetros del registro de Windows para administradores
En Windows, los administradores pueden configurar un equipo para impedir (o permitir) la instalación de una
aplicación de AIR o actualizaciones del motor de ejecución. Estos parámetros están dentro del registro de Windows
bajo la siguiente clave: HKLM\Software\Policies\Adobe\AIR. Incluyen lo siguiente:
Parámetro de registroDescripción
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
28
AppInstallDisabledEspecifica que se permite la instalación y desinstalación de la aplicación de AIR. Configurada en 0 para
UntrustedAppInstallDisabledEspecifica que se permite la instalación de aplicaciones de AIR que no es de confianza (aplicaciones que
UpdateDisabledEspecifica que se permite la actualización del motor de ejecución, ya sea como una tarea en segundo
“autorizado”, y en 1 para “no autorizado”.
no incluyen un certificado de confianza; para más información consulte “Firma digital de archivos de
AIR” en la página 324). Configurada en 0 para “autorizado”, y en 1 para “no autorizado”.
plano o como parte de una instalación explícita. Configurada en 0 para “autorizado”, y en 1 para “no
autorizado”.
Entornos limitados
AIR proporciona una arquitectura completa de seguridad que define autorizaciones según cada archivo en una
aplicación de AIR, tanto interno como externo. Las autorizaciones se conceden a los archivos según el origen y se
asignan en agrupaciones lógicas de seguridad llamados entornos limitados.
Entornos limitados de aplicación de AIR
El modelo de seguridad del motor de ejecución de los entornos limitados está compuesto por el modelo de seguridad
de Flash Player con la adición del entorno limitado de aplicación. Los archivos que no se encuentran en el entorno
limitado de la aplicación tienen restricciones de seguridad similares a aquellos especificados por el modelo de
seguridad de Flash Player.
El motor de ejecución usa estos entornos limitados de seguridad para definir el rango de datos al que puede acceder el
código y las operaciones que puede realizar. Para mantener la seguridad local, los archivos en cada entorno limitado
se aíslan de los archivos de los otros entornos limitados. Por ejemplo, un archivo SWF cargado en una aplicación de
AIR desde una URL de Internet externa se coloca en un entorno limitado remoto y, de forma predeterminada, no tiene
permiso para escribir un script en los archivos que residen en el directorio de la aplicación, que se asignan al entorno
limitado de la aplicación.
La siguiente tabla describe cada tipo de entorno limitado:
Entorno limitadoDescripción
aplicaciónEl archivo reside en el directorio de la aplicación y funciona con el conjunto completo de los privilegios
remotoEl archivo procede de una URL de Internet y se rige por las reglas de un entorno limitado basado en
local de confianzaEl archivo es un archivo local y el usuario lo ha designado como de confianza, usando ya sea un archivo
local con acceso a la redEl archivo es un archivo SWF local publicado con una designación de acceso a la red, pero el usuario no
local con sistema de archivosEl archivo es un archivo local de script que no se publicó con una designación de acceso a la red y el
de AIR.
dominios equivalentes a las reglas que se aplican a los archivos remotos en Flash Player. (Hay entornos
limitados remotos individuales para cada dominio de red, como http://www.example.com y
https://foo.example.org.
de configuración de confianza de Flash Player o Settings Manager. El archivo puede leer en orígenes de
datos locales y puede comunicarse con Internet, pero no tiene todos los privilegios de AIR.
ha confiado explícitamente en el mismo. El archivo se puede comunicar con Internet pero no puede leer
en orígenes de datos locales. Este entorno limitado sólo está disponible para el contenido SWF.
usuario no ha confiado explícitamente en el mismo. Esto incluye a los archivos JavaScript que no son de
confianza. El archivo puede leer en orígenes de datos locales pero no puede comunicarse con Internet.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Este tema se centra principalmente en el entorno limitado de la aplicación y las relaciones con otros entornos limitados
en la aplicación de AIR. Los desarrolladores que usan contenido asignado a otros entornos limitados deben consultar
más documentación sobre el modelo de seguridad de Flash Player. Consulte el capítulo “Seguridad de Flash Player” en
la documentación Programación con ActionScript 3.0 (http://www.adobe.com/go/flashcs4_prog_as3_security_es) y el
documento técnico sobre seguridad en Flash Player 9 (http://www.adobe.com/go/fp9_0_security_es) o el documento
técnico sobre seguridad en Flash Player 10 (http://www.adobe.com/go/fp10_0_security_es) (en inglés).
Entorno limitado de la aplicación
Cuando es instala una aplicación, todos los archivos incluidos en un archivo de instalación de AIR se instalan en el
equipo del usuario en un directorio de la aplicación. Los desarrolladores pueden hacer referencia a este directorio en
código a través del esquema de URL
en la página 309). Todos los archivos del árbol de directorios de la aplicación se asignan al entorno limitado de la
aplicación cuando se ejecuta la aplicación. El contenido en el entorno limitado de la aplicación cuenta con todos los
privilegios que tiene disponible una aplicación de AIR, incluyendo la interacción con el sistema de archivos local.
Muchas aplicaciones de AIR solo usan estos archivos instalados localmente para ejecutar la aplicación. Sin embargo,
las aplicaciones de AIR no están restringidas a solo los archivos dentro the directorio de la aplicación; pueden cargar
cualquier tipo de archivo de cualquier origen. Esto incluye archivos locales del equipo del usuario así como archivos
de orígenes externos disponibles, como los de una red local o en Internet. El tipo de archivo no tiene ningún impacto
en las restricciones de seguridad; los archivos HTML cargados tienen los mismos privilegios de seguridad que los
archivos SWF cargados desde el mismo origen.
app:/ (consulte “Utilización de esquemas de URL de AIR en direcciones URL”
29
El contenido en el entorno limitado de seguridad de la aplicación tiene acceso a las API de AIR pero los contenidos en
otros entornos limitados no pueden utilizarlas. Por ejemplo, la propiedad
air.NativeApplication.nativeApplication.applicationDescriptor, que devuelve los contenidos del
archivo descriptor de la aplicación de la aplicación, está restringido al contenido en el entorno limitado de seguridad
de la aplicación. Otro ejemplo de una API restringida es la clase FileStream, que contiene métodos para leer y escribir
en el sistema de archivos local.
Las API ActionScript que sólo están disponibles para el contenido en el entorno limitado de seguridad de la aplicación
se indican con el logo de AIR en la Referencia del lenguaje ActionScript 3.0 para Adobe AIR. El uso de estas API en otros
entornos limitados hace que el motor de ejecución emita una excepción SecurityError.
Para el contenido HTML (en un objeto HTMLLoader) todas las API JavaScript de AIR (las que están disponibles
mediante la propiedad
window.runtime o mediante el objeto air cuando se usa el archivo AIRAliases.js) están
disponibles para el contenido en el entorno limitado de seguridad de la aplicación. El contenido HTML en otro
entorno limitado no tiene acceso a la propiedad
window.runtime, por lo que este contenido no puede acceder a las
API de AIR.
Restricciones de JavaScript y HTML
Para el contenido HTML en el entorno limitado de seguridad de la aplicación, hay limitaciones en el uso de API que
pueden transformar dinámicamente cadenas en código ejecutable después de que se carga el código. Esta limitación es
para evitar que la aplicación accidentalmente inserte (y ejecute) código desde orígenes que no pertenecen a la
aplicación (como dominios de red potencialmente inseguros). Un ejemplo es el uso de la función
información, consulte “Restricciones de código del contenido en entornos limitados diferentes” en la página 33
eval(). Para más
Restricciones en etiquetas img en el contenido del campo de texto ActionScript
Para evitar posibles ataques de suplantación de identidad (phishing), las etiquetas img en el contenido HTML en
objetos TextField de ActionScript se omiten en el contenido SWF en el entorno limitado de seguridad de la aplicación.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Restricciones en asfunction
El contenido en el entorno limitado de la aplicación no puede usar el protocolo asfunction en el contenido HTML
en los campos de texto de ActionScript 2.0.
Acceso prohibido a la caché persistente entre dominios
El contenido SWF en el entorno limitado de la aplicación no puede usar la caché entre dominios, una función que se
añadió a la actualización 3 de Flash Player 9. Esta función permite que Flash Player utilice la caché persistentemente
en el contenido del componente de la plataforma de Adobe y vuelva a utilizarlo en el contenido SWF cargado bajo
demanda (eliminando la necesidad de volver a cargar el contenido varias veces).
Privilegios de contenido en entornos limitados que no pertenecen a la
aplicación
Los archivos cargados desde una red o Internet se asignan al entorno limitado remoto. Los archivos cargados fuera del
directorio de la aplicación se asignan al entorno limitado
la red o local de confianza; esto depende de cómo se creó el archivo y si el usuario tiene confianza explícita en
el archivo a través del Administrador de configuración global de Flash Player. Para más información, consulte
A diferencia del contenido en el entorno limitado de seguridad de la aplicación, el contenido JavaScript en un entorno
limitado de seguridad que no pertenece a la aplicación puede llamar a la función
eval() para que ejecute
dinámicamente el código generado en cualquier momento. Sin embargo, hay restricciones en JavaScript en un entorno
limitado de seguridad que no pertenece a la aplicación. Las restricciones son:
• El código JavaScript en un entorno limitado que no pertenece a la aplicación no tiene acceso al objeto
window.runtime y como tal este código no puede ejecutar las API de AIR.
• Como valor predeterminado, el contenido en un entorno limitado de seguridad que no pertenece a la aplicación no
puede usar llamadas XMLHttpRequest para cargar datos de otros dominios excepto del dominio que llama a la
petición. Sin embargo, el código de aplicación puede conceder permiso al contenido que no pertenece a la
aplicación configurando un atributo
allowCrossdomainXHR en el fotograma o en el iframe. Para más información,
consulte “Creación de scripts entre contenido en diferentes dominios” en la página 36.
• Hay restricciones para llamar al método window.open() JavaScript. Para más información, consulte
“Restricciones para llamar al método window.open() JavaScript” en la página 36.
Para más información, consulte “Restricciones de código del contenido en entornos limitados diferentes” en la
página 33
Restricciones para cargar elementos CSS, frame, iframe e img
El contenido HTML en los entornos limitados de seguridad remotos (red) sólo puede cargar contenido CSS, frame,
iframe e img de dominios remotos (de URL de red).
El contenido HTML en los entornos limitados local con sistema de archivos, local con acceso a la red o local de
confianza solo pueden cargar contenido CSS,
aplicaciones).
frame, iframe e img de entornos limitados locales (no de URL de red o
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Seguridad en HTML
El motor de ejecución impone reglas y proporciona mecanismos para superar posibles vulnerabilidades de seguridad
en HTML y JavaScript. Se imponen las mismas reglas independientemente si la aplicación está principalmente escrita
en JavaScript o si se carga el contenido HTML y JavaScript en una aplicación basada en SWF. El contenido en el
entorno limitado de la aplicación y en el entorno limitado de seguridad que no pertenece a la aplicación tiene diferentes
privilegios (consulte “Entornos limitados” en la página 28). Cuando se carga contenido en un iframe o en un
fotograma, el motor de ejecución proporciona un mecanismo seguro de puente de entorno limitado que permite que
el contenido en el fotograma o iframe se comunique de forma segura en el entorno limitado de seguridad de la
aplicación.
Este tema describe la arquitectura de seguridad HTML de AIR y cómo utilizar iframes, fotogramas y el puente de
entorno limitado para configurar la aplicación.
Para más información, consulte “Cómo evitar errores de JavaScript relacionados con la seguridad” en la página 236.
Información general sobre la configuración de la aplicación basada en HTML
Los fotogramas e iframes proporcionan una estructura conveniente para organizar contenido HTML en AIR. Los
fotogramas proporcionan un medio para mantener la persistencia de datos y para trabajar de forma segura con el
contenido remoto.
31
Dado que HTML en AIR conserva la organización normal basada en la página, el entorno HTML se regenera
completamente si el fotograma superior del contenido HTML “navega” a una página diferente. Se pueden usar
fotogramas e iframes para conservar la persistencia de datos en AIR, al igual que en una aplicación Web ejecutándose
en un navegador. Defina los objetos de la aplicación principal en el fotograma superior y persistirán siempre que no
permita que el fotograma navegue a una nueva página. Use iframes o fotogramas secundarios para cargar y visualizar
las partes transitorias de la aplicación. (Hay varias maneras de mantener la persistencia de datos que se pueden usar
además o en lugar de los fotogramas. Éstas incluyen cookies, objetos compartidos locales, almacenamiento en archivo
local, el almacén de archivo cifrado y el almacenamiento local en base de datos.)
Debido a que HTML en AIR conserva su línea difuminada normal entre el código ejecutable y los datos, AIR sitúa el
contenido en el marco superior del entorno HTML en el entorno limitado de la aplicación. Tras el evento de página
load, AIR restringe todas las operaciones como, por ejemplo, eval(), que puede convertir una cadena de texto en un
objeto ejecutable. Esta restricción se impone aun cuando una aplicación no carga el contenido remoto. Para permitir
que el contenido HTML ejecute estas operaciones restringidas, debe utilizar fotogramas o iframes para situar el
contenido en un entorno limitado ajeno a la aplicación. (Puede ser necesaria la ejecución de contenido en un marco
secundario de entorno limitado cuando se utilizan algunos marcos de aplicación de JavaScript que confían en la
función
aplicación, consulte “Restricciones de código del contenido en entornos limitados diferentes” en la página 33.
Dado que HTML en AIR conserva la habilidad de cargar contenido remoto posiblemente no seguro, AIR impone una
política de mismo origen que evita que el contenido en un dominio interactúe con el contenido en otro. Para permitir
la interacción entre el contenido de aplicación y el contenido en otro dominio, se puede configurar un puente que actúe
como la interfaz entre un fotograma principal y uno secundario.
eval().) Para obtener una lista completa de las restricciones en JavaScript en el entorno limitado de la
Configuración de una relación de entorno limitado principal y secundario
AIR añade los atributos sandboxRoot y documentRoot al los elementos frame e iframe HTML. Estos atributos
permiten tratar al contenido de aplicación como si proviniera de otro dominio:
AtributoDescripción
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
32
sandboxRootLa URL que se debe utilizar para determinar el entorno limitado y dominio
documentRootLa URL desde donde cargar el contenido del fotograma. Se deben utilizar los
donde colocar el contenido del fotograma. Se deben utilizar los esquemas de
file:, http: o https:.
URL
esquemas URL file:, app: o app-storage:.
En el siguiente ejemplo se asigna el contenido instalado en el subdirectorio del entorno limitado de la aplicación para
que se ejecute en el entorno limitado remoto y en el dominio www.example.com:
Configuración de un puente entre fotogramas principales y secundarios en diferentes
entornos limitados o dominios
AIR añade las propiedades childSandboxBridge y parentSandboxBridge al objeto window de cualquier fotograma
secundario. Estas propiedades permiten definir puentes para que actúen como interfaces entre un fotograma principal
y uno secundario. Cada puente va en una dirección:
childSandboxBridge — La propiedad childSandboxBridge permite que el fotograma secundario exponga una
interfaz al contenido en el fotograma principal. Para exponer una interfaz, se debe establecer la propiedad
childSandbox a una función u objeto en el fotograma secundario. Entonces puede acceder al objeto o función desde
el contenido en el fotograma principal. En el siguiente ejemplo se muestra el modo en que un script ejecutándose en
un fotograma secundario puede exponer al fotograma principal un objeto que contiene una función y una propiedad:
Si este contenido secundario se encuentra en un iframe y se le asignó un ID de "elemento secundario", se puede
acceder a la interfaz desde el contenido principal leyendo la propiedad
var childInterface = document.getElementById("child").childSandboxBridge;
air.trace(childInterface.calculatePrice()); //traces "1.65"
air.trace(childInterface.storeID)); //traces "abc"
parentSandboxBridge — La propiedad parentSandboxBridge permite que el fotograma principal exponga una
childSandboxBridge del fotograma:
interfaz al contenido en el fotograma secundario. Para exponer una interfaz, se debe establecer la propiedad
parentSandbox del fotograma secundario a una función u objeto en el fotograma principal. Entonces puede acceder
al objeto o función desde el contenido en el fotograma secundario. En el siguiente ejemplo se muestra el modo en que
un script ejecutándose en un fotograma principal puede exponer al fotograma secundario un objeto que contiene una
función de guardar:
var interface = {};
interface.save = function(text){
var saveFile = air.File("app-storage:/save.txt");
//write text to file
}
document.getElementById("child").parentSandboxBridge = interface;
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Usando esta interfaz, el contenido en el fotograma secundario podría guardar texto en un archivo denominado
save.txt. Sin embargo, no tendría ningún otro acceso al sistema de archivos. En general, el contenido de aplicación debe
exponer una interfaz lo más limitada posible a otros entornos limitados. El contenido secundario puede llamar a la
función save de la siguiente manera:
var textToSave = "A string.";
window.parentSandboxBridge.save(textToSave);
Si el contenido secundario intenta definir una propiedad del objeto parentSandboxBridge, el motor de ejecución
emite una excepción SecurityError. Si el contenido principal intenta definir una propiedad del objeto
childSandboxBridge, el motor de ejecución emite una excepción SecurityError.
Restricciones de código del contenido en entornos limitados diferentes
Como se describe en la introducción a este tema, “Seguridad en HTML” en la página 31, el motor de ejecución impone
reglas y proporciona mecanismos para superar posibles vulnerabilidades de seguridad en HTML y JavaScript. Este
tema lista dichas restricciones. Si el código intenta llamar a estas API restringidas, el motor de ejecución emite un error
con el mensaje “Adobe AIR runtime security violation for JavaScript code in the application security sandbox”
(Infracción de seguridad del motor de ejecución de Adobe AIR para el código JavaScript en el entorno limitado de
seguridad de la aplicación).
Para más información, consulte “Cómo evitar errores de JavaScript relacionados con la seguridad” en la página 236.
33
Restricciones en el uso de la función eval() JavaScript y técnicas similares
Para el contenido HTML en el entorno limitado de seguridad de la aplicación, hay limitaciones en el uso de API que
pueden transformar dinámicamente cadenas en código ejecutable después de cargar el código (después de que el
onloaddel elemento body se haya distribuido y la función del controlador onload haya terminado de
evento
ejecutarse). Esta limitación es para evitar que la aplicación accidentalmente inserte (y ejecute) código desde orígenes
que no pertenecen a la aplicación (como dominios de red potencialmente inseguros).
Por ejemplo, si la aplicación usa datos de cadena de un origen remoto para escribir en la propiedad innerHTML de un
elemento DOM, la cadena puede incluir código ejecutable (JavaScript) que podría realizar operaciones no seguras. Sin
embargo, mientras que el contenido se está cargando, no hay riesgo de que se inserten cadenas remotas en el DOM.
Una restricción es el uso de la función
aplicación y después de procesar el controlador de eventos onload, sólo se puede usar la función
limitadas. Las siguientes reglas se aplican al uso de la función
limitado de seguridad de la aplicación:
• Se permiten expresiones relacionadas con literales. Por ejemplo:
eval("null");
eval("3 + .14");
eval("'foo'");
• Se permiten literales de objetos, como en el siguiente ejemplo:
{ prop1: val1, prop2: val2 }
• Se prohíben los setter/getters literales de objetos, como en el siguiente ejemplo:
{ get prop1() { ... }, set prop1(v) { ... } }
eval() JavaScript. Una vez que se carga el código en el entorno limitado de la
eval() en maneras
eval()después de que se cargue el código del entorno
• Se permiten literales de conjuntos, como en el siguiente ejemplo:
[ val1, val2, val3 ]
• Se prohíben las expresiones relacionadas con las lecturas de propiedades, como en el siguiente ejemplo:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
a.b.c
Seguridad en AIR
• La invocación de función está prohibida.
• Las definiciones de funciones están prohibidas.
• La configuración de cualquier propiedad está prohibida.
• Los literales de funciones están prohibidos.
Sin embargo, mientras se carga el código, antes del evento
de eventos
onload, estas restricciones no se aplican al contenido en el entorno limitado de seguridad de la aplicación.
onload y durante la ejecución de la función del controlador
Por ejemplo, después de cargar el código, el código siguiente hace que el motor de ejecución emita una excepción:
El código generado dinámicamente, como el que se crea cuando se llama a la función eval(), presenta un riego de
seguridad si se permite dentro del entorno limitado de la aplicación. Por ejemplo, una aplicación puede
accidentalmente ejecutar una cadena cargada de un dominio de red y dicha cadena puede tener código
malintencionado. Por ejemplo, puede ser código para eliminar o alterar archivos en el equipo del usuario. O puede ser
código que informa a un dominio de red que no es de confianza sobre el contenido de un archivo local.
34
A continuación se incluyen formas de generar código dinámico:
• Llamar a la función eval().
• Usar las propiedades innerHTML o funciones DOM para insertar etiquetas de script que cargan un script fuera del
directorio de la aplicación.
• Usar las propiedades innerHTML o funciones DOM para insertar etiquetas de script que tienen código insertado
(en lugar de cargar un script a través del atributo
src).
• Configurar el atributo src para que las etiquetas script carguen un archivo JavaScript que se encuentra fuera del
directorio de la aplicación.
• Usar el esquema javascript de URL (como en href="javascript:alert('Test')").
• Usar la función setInterval() o setTimout() donde el primer parámetro (definiendo la función para que se
ejecute de forma asíncrona) es una cadena (para evaluar) en vez de un nombre de función (como en
setTimeout('x = 4', 1000)).
• Llamar a document.write() o document.writeln().
El código en el entorno limitado de seguridad de la aplicación solo puede utilizar estos métodos mientras se carga el
contenido.
Estas restricciones no impiden el uso de
eval() con los literales de objetos JSON. Esto permite que el contenido de
aplicación trabaje con la biblioteca JSON JavaScript. Sin embargo, está restringido en el uso de código JSON
sobrecargado (con controladores de eventos).
Para otros marcos de Ajax y bibliotecas de código JavaScript, verifique si el código en el marco o biblioteca funciona
dentro de estas restricciones en código generado dinámicamente. Si no funcionan, incluya cualquier contenido que
usa el marco o la biblioteca en un entorno limitado de seguridad que no pertenece a la aplicación.
Para·más·información,·consulte·“Privilegios de contenido en entornos limitados que no pertenecen a la aplicación” en
la página 30·y·“Utilización de scripts entre contenido de la aplicación y contenido que no pertenece a la aplicación” en
la página 41. Adobe mantiene una lista de marcos de Ajax que admiten el entorno limitado de seguridad de aplicación,
en http://www.adobe.com/es/products/air/develop/ajax/features/.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
A diferencia del contenido en el entorno limitado de seguridad de la aplicación, el contenido JavaScript en un entorno
limitado de seguridad que no pertenece a la aplicación puede llamar a la función
eval() para que ejecute
dinámicamente el código generado en cualquier momento.
Restricciones para acceder a las API de AIR (para entornos limitados ajenos a la aplicación)
El código JavaScript en un entorno limitado que no pertenece a la aplicación no tiene acceso al objeto
window.runtime y como tal este código no puede ejecutar las API de AIR. Si el contenido en un entorno limitado de
seguridad que no pertenece a la aplicación llama al siguiente código, la aplicación emite una excepción TypeError:
El tipo de excepción es TypeError (valor no definido), porque el contenido en el entorno limitado que no pertenece a
la aplicación no reconoce el objeto
Se puede exponer la funcionalidad del motor de ejecución al contenido en un entorno limitado que no pertenece a la
aplicación usando un puente de script. Para más información, consulte “Utilización de scripts entre contenido de la
aplicación y contenido que no pertenece a la aplicación” en la página 41.
window.runtime, por lo tanto se lo considera un valor no definido.
35
Restricciones para usar llamadas XMLHttpRequest
El contenido HTML en el entorno limitado de seguridad de la aplicación no puede utilizar métodos XMLHttpRequest
sincrónicos para cargar datos desde fuera del entorno limitado de la aplicación mientras se está cargando el contenido
HTML y durante el evento
onLoad.
De forma predeterminada, el contenido HTML en entornos limitados de seguridad que no pertenecen a la aplicación
no pueden usar el objeto JavaScript XMLHttpRequest para cargar datos de dominios que no sea el dominio que llama
a la petición. Una etiqueta
frame o iframe puede incluir el atributo allowcrosscomainxhr. La configuración de este
atributo a cualquier valor que no sea null permite que el contenido en el fotograma o iframe use el objeto
XMLHttpRequest Javascript para cargar datos de dominios que no sea el dominio del código que llama a la petición:
Para más información, consulte “Creación de scripts entre contenido en diferentes dominios” en la página 36.
Restricciones para cargar elementos CSS, frame, iframe e img (para el contenido en entornos
limitados que no pertenecen a la aplicación)
El contenido HTML en los entornos limitados de seguridad remotos (red) solo puede cargar contenido CSS, frame,
iframe e img de entornos limitados remotos (de URL de red).
El contenido HTML en los entornos limitados local con sistema de archivos, local con acceso a la red o local de
confianza solo pueden cargar contenido CSS, frame, iframe e
entornos limitados remotos).
img de entornos limitados locales (no de aplicaciones o
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Restricciones para llamar al método window.open() JavaScript
Si una ventana que se crea a través de una llamada al método window.open() JavaScript muestra contenido de un
entorno limitado de seguridad que no pertenece a la aplicación, el título de la ventana comienza con el título de la
ventana principal (de inicio), seguido por dos puntos (:). No se puede utilizar el código para trasladar esa porción del
título de la ventana fuera de la pantalla.
El contenido en entornos limitados de seguridad que no pertenecen a la aplicación solo pueden llamar exitosamente
al método
impide que el contenido que no pertenece a la aplicación cree ventanas que se pueden utilizar maliciosamente (por
ejemplo, para ataques de suplantación de identidad (phishing). Asimismo, el controlador de eventos para el evento de
ratón o teclado no puede definir el método
llamando a la función
window.open() JavaScript en respuesta a un evento activado por el ratón o interacción del teclado. Esto
window.open() para ejecutarse después de una demora (por ejemplo
setTimeout()).
36
El contenido en entornos limitados remotos (red) sólo puede utilizar el método
contenido en entornos limitados de red remotos. No puede utilizar el método
de la aplicación o entornos limitados locales.
El contenido en los entornos limitados local con sistema de archivos, local con acceso a la red o local de confianza
(consulte “Entornos limitados” en la página 28) solo puede usar el método
entornos limitados locales. No puede utilizar el método
entornos limitados remotos.
window.open() para abrir contenido de la aplicación o
window.open() para abrir el
window.open() para abrir contenido
window.open() para abrir contenido en
Errores al llamar a código restringido
Si se llama al código que no se puede utilizar en un entorno limitado debido a estas restricciones de seguridad, el motor
de ejecución distribuye un error de JavaScript: “Adobe AIR runtime security violation for JavaScript code in the
application security sandbox” (Infracción de seguridad del motor de ejecución de Adobe AIR para el código JavaScript
en el entorno limitado de seguridad de la aplicación).
Para más información, consulte “Cómo evitar errores de JavaScript relacionados con la seguridad” en la página 236.
Protección del entorno limitado al cargar contenido HTML de una cadena
El método loadString() de la clase HTMLLoader permite crear contenido HTML en tiempo de ejecución. No
obstante, los datos que se utilizan como contenido HTML pueden verse dañados si la información se carga desde un
origen de Internet no seguro. Por este motivo, de forma predeterminada, el código HTML creado con el
loadString() no se sitúa en el entorno limitado de la aplicación y no tiene acceso a las API de AIR. Sin
método
embargo, puede establecer la propiedad
HTMLLoader en true para que sitúe HTML creado utilizando el método
aplicación. Para obtener más información, consulte “Carga del contenido HTML desde una cadena” en la página 234.
placeLoadStringContentInApplicationSandbox de un objeto
loadString() en el entorno limitado de la
Creación de scripts entre contenido en diferentes
dominios
Las aplicaciones de AIR tienen privilegios especiales cuando se instalan. Es fundamental que los mismos privilegios no
se filtren a otro contenido, incluyendo archivos remotos y archivos locales que no son parte de la aplicación.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Puente de entorno limitado de AIR
Normalmente, el contenido de otros dominios no pueden llamar a scripts en otros dominios. Para proteger las
aplicaciones de AIR de filtraciones accidentales de control o información privilegiada, se implementan las siguientes
restricciones en el contenido en el entorno limitado de seguridad
• El código en el entorno limitado de seguridad de la aplicación no se permite en otros entornos limitados llamando
al método
Security.allowDomain(). Con la llamada a este método desde el entorno limitado de seguridad de la
aplicación se emitirá un error.
• Se impide la importación de contenido que no pertenece a la aplicación en el entorno limitado de la aplicación si
se define la propiedad
LoaderContext.securityDomain o LoaderContext.applicationDomain.
Aún hay casos donde la aplicación de AIR principal requiere que el contenido de un dominio remoto tenga acceso
controlado a los scripts en la aplicación de AIR principal o viceversa. Para lograr esto, el motor de ejecución
proporciona un mecanismo de puente de entorno limitado, que actúa como una puerta de enlace entre los dos entornos
limitados. Un puente de entorno limitado puede proporcionar interacción explícita entre entornos limitados de
seguridad de aplicación y remotos.
El puente de entorno limitado expone dos objetos al que pueden acceder ambos scripts cargados y los que se están
cargando:
• El objeto parentSandboxBridge permite que el contenido que se está cargando exponga las propiedades y
funciones a los scripts en el contenido cargado.
• El objeto childSandboxBridge permite que el contenido cargado exponga las propiedades y funciones a los scripts
en el contenido que se está cargando.
aplicación (contenido instalado con la aplicación).
37
Los objetos expuestos a través del puente de entorno limitado se pasan por valor y no por referencia. Todos los datos
se serializan. Esto significa que los objetos expuestos por un lado del puente no pueden ser definidos por el otro lado
del puente y que los objetos expuestos no tienen tipo. Asimismo, solo se pueden exponer funciones y objetos simples;
no se pueden exponer objetos complejos.
Si el contenido secundario intenta definir una propiedad del objeto parentSandboxBridge, el motor de ejecución emite
una excepción SecurityError. De igual manera, si el contenido principal intenta definir una propiedad del objeto
childSandboxBridge, el motor de ejecución emite una excepción SecurityError.
Ejemplo de puente de entorno limitado (SWF)
Supongamos que una aplicación de almacén de música de AIR quiere permitir que los archivos SWF remotos
transmitan el precio de los álbumes, pero no quiere que el archivo SWF remoto divulgue si el precio es un precio de
oferta. Para hacer esto, una clase StoreAPI proporciona un método para adquirir el precio, pero oculta el precio de
oferta. Una instancia de esta clase StoreAPI se asigna a continuación a la propiedad
LoaderInfo del objeto Loader que carga el SWF remoto.
El siguiente es el código para almacén de música de AIR:
parentSandboxBridge del objeto
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
private var child:Loader;
private var isSale:Boolean = false;
private function initApp():void {
var request:URLRequest =
new URLRequest("http://[www.yourdomain.com]/PriceQuoter.swf")
child = new Loader();
child.contentLoaderInfo.parentSandboxBridge = new StoreAPI(this);
child.load(request);
container.addChild(child);
}
public function getRegularAlbumPrice():String {
return "$11.99";
}
public function getSaleAlbumPrice():String {
return "$9.99";
}
public function getAlbumPrice():String {
if(isSale) {
return getSaleAlbumPrice();
}
else {
return getRegularAlbumPrice();
}
}
</mx:Script>
<mx:UIComponent id="container" />
</mx:WindowedApplication>
38
El objeto StoreAPI llama a la aplicación principal para recuperar el precio normal del álbum, pero devuelve “No
disponible” cuando se llama al método
getSaleAlbumPrice(). El siguiente código define la clase StoreAPI:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
public class StoreAPI
{
private static var musicStore:Object;
public function StoreAPI(musicStore:Object)
{
this.musicStore = musicStore;
}
public function getRegularAlbumPrice():String {
return musicStore.getRegularAlbumPrice();
}
public function getSaleAlbumPrice():String {
return "Not available";
}
public function getAlbumPrice():String {
return musicStore.getRegularAlbumPrice();
}
}
El siguiente código representa un ejemplo del archivo SWF PriceQuoter que informa sobre el precio de venta pero no
puede informar sobre el pecio de oferta:
public class PriceQuoter extends Sprite
{
private var storeRequester:Object;
public function PriceQuoter() {
trace("Initializing child SWF");
trace("Child sandbox: " + Security.sandboxType);
storeRequester = loaderInfo.parentSandboxBridge;
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
addChild(tf);
tf.appendText("Store price of album is: " + storeRequester.getAlbumPrice());
tf.appendText("\n");
tf.appendText("Sale price of album is: " + storeRequester.getSaleAlbumPrice());
}
}
}
Ejemplo de puente de entorno limitado (HTML)
En el contenido HTML, las propiedades parentSandboxBridge y childSandboxBridge se añaden al objeto window
JavaScript de un documento secundario. Para obtener un ejemplo de cómo configurar las funciones del puente en el
contenido HTML, consulte “Definición de una interfaz de puente de entorno limitado” en la página 250.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Limitación de la exposición de API
Cuando se exponen puentes de entorno limitado, es importante exponer las API de nivel alto que limitan el grado del
uso indebido. Tenga en cuenta que el contenido que está llamando a la implementación del puente puede dejar el
sistema vulnerable (por ejemplo, a través de una inyección de código). Entonces, por ejemplo, la exposición de un
método
vulnerable a ser utilizado incorrectamente. Sería mejor exponer una API
readFile(path:String) (que lee los contenidos de un archivo arbitrario) a través de un puente es
readApplicationSetting() que no usa
una ruta y lee un archivo específico. El método más semántico limita el daño que puede hacer una aplicación una vez
que parte de la misma está en peligro.
Véase también
“Utilización de scripts entre contenidos en diferentes entornos limitados de seguridad” en la página 249
“Entorno limitado de la aplicación” en la página 29
“Privilegios de contenido en entornos limitados que no pertenecen a la aplicación” en la página 30
Escritura en el disco
40
Las aplicaciones que se ejecutan en un navegador Web solo tienen una interacción limitada con el sistema de archivos
local del usuario. Los navegadores Web implementan políticas de seguridad que aseguran que el equipo de un usuario
no corre riesgo como resultado de cargar contenido Web. Por ejemplo, los archivos SWF que se ejecutan a través de
Flash Player en un navegador no pueden interactuar directamente con los archivos que ya se encuentran en el equipo
del usuario. Los objetos y cookies compartidos se pueden escribir en el disco de un equipo de usuario para mantener
las preferencias de usuario y otros datos, pero este es el límite de la interacción con el sistema de archivos. Dado que
las aplicaciones de AIR se instalan de forma nativa, tienen un diferente contrato de seguridad, uno que incluye la
capacidad de leer y escribir en todo el sistema de archivos local.
Esta libertad conlleva gran responsabilidad para los desarrolladores. Las inseguridades de aplicación accidentales
ponen en peligro no sólo la funcionalidad de la aplicación, sino también la integridad del equipo del usuario. Por esta
razón, los desarrolladores deben leer “Prácticas recomendadas de seguridad para desarrolladores” en la página 42.
Los desarrolladores de AIR puede acceder y escribir archivos en el sistema de archivos local usando varias
convenciones de esquemas de URL:
Esquema de URLDescripción
app:/Un alias al directorio de la aplicación. Los archivos que se acceden desde esta ruta se les asignan un entorno
app-storage:/Un alias al directorio de almacenamiento local, estandarizado por el motor de ejecución. Los archivos que se
file:///Un alias que representa la raíz del disco duro del usuario. Un archivo que se accede desde esta ruta se le asigna un
limitado de la aplicación y tienen privilegios completos concedidos por el motor de ejecución.
acceden desde esta ruta se les asigna un entorno limitado que no pertenece a la aplicación.
entorno limitado de la aplicación si el archivo existe en el directorio de la aplicación, de lo contrario se le asigna un
entorno limitado que no pertenece a la aplicación.
Nota: las aplicaciones de AIR no pueden modificar el contenido usando el esquema de URL app:. Asimismo, el directorio
de la aplicación puede leer solo debido a la configuración del administrador.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
A menos que haya restricciones de administrador en el equipo del usuario, las aplicaciones de AIR tienen el privilegio
de escribir en cualquier ubicación en el disco duro del usuario. Se recomienda que los desarrolladores usen la ruta
storage:/ para el almacenamiento local relacionado con su aplicación. Los archivos que se escriben en appstorage:/ desde una aplicación se colocan en una ubicación estándar:
Seguridad en AIR
app-
• En Mac OS: el directorio de almacenamiento de una aplicación es <appData>/<appId>/Local Store/ donde
<appData> es la carpeta de preferencias del usuario. Normalmente es
/Usuarios/<usuario>/Biblioteca/Preferencias
• En Windows: el directorio de almacenamiento de una aplicación es <appData>\<appId>\Local Store\ donde
<appData> es la carpeta especial del usuario CSIDL_APPDATA. Normalmente es C:\Documents and
Settings\<Nombre de usuario>\Application Data
• En Linux: <appData>/<appID>/Local Store/, donde <appData> es /home/<user>/.appdata
Si una aplicación está diseñada para interactuar con archivos existentes en el sistema de archivos del usuario, asegúrese
de leer “Prácticas recomendadas de seguridad para desarrolladores” en la página 42.
Cómo trabajar de forma segura con contenido que no es
de confianza
41
El contenido que no se asigna al entorno limitado de la aplicación puede proporcionar una funcionalidad adicional de
uso de scripts para la aplicación pero solo si cumple con los criterios de seguridad del motor de ejecución. Este tema
explica el contrato de seguridad de AIR con el contenido que no pertenece a la aplicación.
Security.allowDomain()
Las aplicaciones de AIR restringen el acceso al uso de scripts para el contenido que no pertenece a la aplicación más
severamente que el plug-in de navegador de Flash Player restringe el acceso al uso de scripts para el contenido que no
es de confianza. Por ejemplo, en Flash Player en el navegador, cuando un archivo SWF que se asigna al entorno
limitado
a cualquier archivo SWF cargado desde el dominio especificado. El método equivalente no se permite por parte del
contenido de
a la aplicación en el sistema de archivos del usuario. Los archivos remotos no pueden acceder de forma directa al
entorno limitado de la aplicación, independientemente de las llamadas al método
local-trusted llama al método System.allowDomain(), el acceso a la secuencia de comandos se concede
aplicación en las aplicaciones de AIR, ya que concedería acceso peligroso al archivo que no pertenece
Security.allowDomain().
Utilización de scripts entre contenido de la aplicación y contenido que no
pertenece a la aplicación
Las aplicaciones de AIR que usan script entre contenido de la aplicación y contenido que no pertenece a la aplicación
tienen condiciones más complejas de seguridad. Los archivos que no están en el entorno limitado de la aplicación sólo
tienen permitido acceder a las propiedades y métodos de los archivos en el entorno limitado de la aplicación a través
del uso de un puente de entorno limitado. Un puente de entorno limitado actúa como una puerta de enlace entre el
contenido de aplicación y el contenido que no pertenece a la aplicación, proporcionando una interacción explícita
entre los dos archivos. Cuando se usan correctamente, los puentes de entorno limitado brindan una capa adicional de
seguridad, restringiendo el contenido que no pertenece a la aplicación de acceder a las referencias de objetos que
forman parte del contenido de aplicación.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
La ventaja de los puentes de entorno limitado se describe mejor en este ejemplo. Supongamos que una aplicación de
almacén de música de AIR desea proporcionar una API a los anunciantes que quieren crear sus propios archivos SWF,
con los que la aplicación de almacén puede comunicarse. El almacén desea proporcionar a los anunciantes métodos
para buscar artistas y CD en el almacén, pero también quieren aislar algunos métodos y propiedades del archivo SWF
de terceros por razones de seguridad.
Un puente de entorno limitado puede brindar esta funcionalidad. De forma predeterminada, el contenido cargado
externamente en una aplicación de AIR durante el tiempo de ejecución no tiene acceso a ningún método ni propiedad
en la aplicación principal. Con una implementación personalizada del puente de entorno limitado, un desarrollador
puede proporcionar servicios al contenido remoto sin exponer estos métodos o propiedades. Considere al puente de
entorno limitado como una vía entre el contenido de confianza y el contenido que no es de confianza, brindando
comunicación entre el contenido cargado y el cargador sin exponer las referencias de objetos.
Para más información sobre cómo utilizar de forma segura los puentes de entorno limitado, consulte “Creación de
scripts entre contenido en diferentes dominios” en la página 36.
Protección contra la generación dinámica de contenido SWF no seguro
El método Loader.loadBytes() proporciona un modo para que una aplicación genere contenido SWF desde un
conjunto de bytes. Sin embargo, los ataques a los datos cargados desde orígenes remotos podrían causar un daño serio
cuando se carga el contenido. Esto es cierto cuando se cargan datos en el entorno limitado de la aplicación, donde el
contenido SWF generado puede acceder al conjunto entero de las API de AIR.
42
Existen usos legítimos para la utilización del método
se puede usar el método
loadBytes() para generar datos de imagen para controlar la coordinación de la visualización
loadBytes() sin generar código SWF ejecutable. Por ejemplo,
de la imagen. Asimismo, existen usos legítimos que si utilizan la ejecución del código, como la creación dinámica de
contenido SWF para reproducción de audio. En AIR, de forma predeterminada, el método
cargar el contenido SWF; solo permite cargar contenido de imágenes. En AIR, la propiedad
método
permitir explícitamente que la aplicación use
loadBytes() tiene una propiedad allowLoadBytesCodeExecution, que se puede definir en true para
loadBytes() para cargar contenido SWF ejecutable. El siguiente código
loadBytes()no permite
loaderContext del
muestra la manera de usar esta función:
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true;
loader.loadBytes(bytes, loaderContext);
Si se llama a loadBytes() para cargar el contenido SWF y la propiedad allowLoadBytesCodeExecution del objeto
LoaderContext está definida en
false (el valor predeterminado), el objeto Loader emite una excepción SecurityError.
Nota: es posible que esta API cambie en una futura versión de Adobe AIR. Cuando ocurra, tal vez tenga que recompilar
el contenido que usa la propiedad
allowLoadBytesCodeExecution de la clase LoaderContext.
Prácticas recomendadas de seguridad para
desarrolladores
Aunque las aplicaciones de AIR se crean usando tecnologías Web, es importante que los desarrolladores observen que
no están trabajando dentro del entorno limitado de seguridad del navegador. Esto significa que es posible crear
aplicaciones de AIR que pueden causar daño al sistema local, ya sea accidental o malintencionadamente. AIR intenta
minimizar este riesgo, pero aún hay maneras donde se pueden introducir vulnerabilidades. Este tema abarca
importantes situaciones potenciales no seguras.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Riesgos de importar archivos en un entorno limitado de seguridad de la
aplicación
Los archivos que existen en el directorio de la aplicación se asignan al entorno limitado de la aplicación y tienen
privilegios completos del motor de ejecución. Se recomienda que las aplicaciones que escriben en el sistema de
archivos local escriban en
el equipo del usuario, por ende los archivos no están asignados al entorno limitado de la aplicación y presentan un
riesgo reducido de seguridad. Se recomienda que los desarrolladores consideren los siguientes puntos:
app-storage:/. Este directorio existe de forma separada de los archivos de la aplicación en
• Incluir un archivo en un archivo de AIR (en la aplicación instalada) sólo si es necesario.
• Incluir un archivo de script en un archivo de AIR (en la aplicación instalada) sólo si el comportamiento se
comprende cabalmente y es de confianza.
• No escribir ni modificar el contenido en el directorio de la aplicación. El motor de ejecución impide que las
aplicaciones escriban o modifiquen los archivos y directorios usando el esquema de URL
excepción SecurityError.
app:/ emitiendo una a
• No utilizar datos de un origen de red como parámetros para los métodos de la API de AIR que pueden llevar a la
ejecución de código. Esto incluye el uso del método
Loader.loadBytes() y la función eval() JavaScript.
Riesgos de usar un origen externo para determinar rutas
Una aplicación de AIR puede correr riesgos cuando se usan datos o contenido externo. Por esta razón, tenga cuidado
cuando utiliza datos de la red o del sistema de archivos. La responsabilidad de confianza depende del desarrollador y
las conexiones de red que realizan, pero la carga de datos externos es intrínsicamente peligrosa y no se debería usar
para operaciones confidenciales. No se recomienda que los desarrolladores:
43
• Usen datos de un origen de red para determinar un nombre de archivo.
• Utilicen datos de un origen de red para construir una URL que usa la aplicación para enviar información privada.
Riesgos de usar, almacenar o transmitir credenciales no seguras
El almacenamiento de credenciales de usuario en el sistema de archivos local del usuario intrínsicamente introduce el
riesgo de que estas credenciales sean vulnerables. Se recomienda que los desarrolladores consideren los siguientes
puntos:
• Si se deben almacenar las credenciales de forma local, deben cifrar las credenciales cuando se escribe en el sistema
de archivos local. El motor de ejecución proporciona un almacenamiento cifrado exclusivo para cada aplicación
instalada, a través de la clase EncryptedLocalStore. Para más información, consulte “Almacenamiento de datos
cifrados” en la página 216.
• No se deben transmitir credenciales de usuario no cifradas a un origen de red a menos que el origen sea de
confianza.
• Nunca se debe especificar una contraseña predeterminada en la creación de una credencial, los usuarios deben crear
las propias. Los usuarios que dejan una contraseña predeterminada exponen sus credenciales a un atacante que ya
conoce la contraseña predeterminada.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Seguridad en AIR
Riesgos de un ataque de desactualización
Durante la instalación de la aplicación, el motor de ejecución verifica que la versión de la aplicación no está
actualmente instalada. Si una aplicación ya está instalada, el motor de ejecución compara la cadena de la versión con
la versión que se está instalando. Si esta cadena es diferente, el usuario puede elegir actualizar la instalación. El motor
de ejecución no garantiza que la versión recién instalada sea más nueva que la versión más antigua, solo que es
diferente. Un atacante puede distribuir una versión anterior al usuario para evitar una debilidad de seguridad. Por esta
razón, se recomienda que el desarrollador verifique las versiones cuando se ejecuta la aplicación. Es una buena idea
que las aplicaciones verifiquen en la red las actualizaciones requeridas. De ese modo, aun si un atacante engaña al
usuario para que ejecute una versión antigua, dicha versión antigua reconocerá que se debe actualizar. Asimismo, el
uso de un esquema claro de versiones para la aplicación hace más difícil engañar a los usuarios para que instalen una
versión desactualizada. Para más información, consulte “Definición de propiedades en el archivo descriptor de la
aplicación” en la página 46.
Firma de código
Se requiere que todos los archivos de instalación de AIR tengan el código firmado. La firma de código es un proceso
criptográfico de confirmar que el origen especificado del software es veraz. Las aplicaciones de AIR se pueden firmar
vinculando un certificado de una entidad emisora de certificados externa (CA), o bien, creando su propio certificado.
Se recomienda un certificado comercial de una CA conocida ya que proporciona la garantía a los usuarios de que están
instalando la aplicación real y no una falsificación. Sin embargo, los certificados con firma automática se pueden crear
adt del SDK o usando Flash, Flex Builder u otra aplicación que usa adt para la generación de certificados. Los
usando
certificados con firma automática no proporcionan ninguna garantía que la aplicación que se está instalando es
genuina.
44
Para más información acerca de la firma digital de AIR, consulte “Firma digital de archivos de AIR” en la página 324
y “Creación de aplicaciones de AIR con las herramientas de la línea de comandos” en la página 359.
Capítulo 8: Configuración de las
propiedades de una aplicación de AIR
Aparte de todos los archivos y demás objetos que conforman una aplicación de AIR, cada aplicación de AIR requiere
un archivo descriptor de la aplicación. El archivo descriptor de la aplicación es un archivo XML que define las
propiedades básicas de la aplicación.
Cuando se desarrollan aplicaciones de AIR con Adobe® AIR™ Update para Adobe® Flash® CS3 Professional o Adobe®
Flash® CS4 Professional, la aplicación se genera automáticamente al crear un proyecto de AIR. Para abrir una ventana
que permite modificar la configuración del descriptor de la aplicación, vaya al menú Comandos > AIR - Configuración
de aplicación e instalador. El archivo descriptor de la aplicación también puede modificarse manualmente.
Estructura del archivo descriptor de la aplicación
El archivo descriptor de la aplicación contiene propiedades que afectan al conjunto de la aplicación, como son el
nombre, la versión, el aviso de copyright, etc. El archivo descriptor puede tener cualquier nombre de archivo. Cuando
se crea un archivo de AIR utilizando la configuración predeterminada en Flash CS3 o Flash CS4, el nombre del archivo
descriptor de la aplicación pasa a ser
application.xml
y se sitúa dentro de un directorio especial en el paquete de AIR.
45
El siguiente es un ejemplo de archivo descriptor de una aplicación:
Definición de propiedades en el archivo descriptor de la
aplicación
Utilice los atributos y elementos XML del descriptor de la aplicación para definir los siguientes tipos de propiedades
para su aplicación de AIR:
• Versión necesaria del motor de ejecución de AIR.
• Identidad de la aplicación.
• Carpetas de instalación y de menús de programa.
• Propiedades de ventana y contenido inicial.
• Archivos de icono de la aplicación.
• Si la aplicación proporciona una IU personalizada para actualizaciones.
• Si la aplicación se puede invocar mediante contenido SWF que se ejecute en el navegador del usuario.
• Asociaciones de tipos de archivos.
Especificación de la versión necesaria de AIR
Los atributos del elemento raíz de un archivo descriptor de la aplicación, application, especifican la versión
necesaria del motor de ejecución de AIR:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de las propiedades de una aplicación de AIR
xmlns El espacio de nombre de AIR, el cual debe definirse como espacio de nombre XML predeterminado. El espacio
de nombre cambia con cada edición principal de AIR (pero no con las revisiones menores). El último segmento del
espacio de nombre, por ejemplo “1.5”, indica la versión del motor de ejecución que requiere la aplicación. Asegúrese
de establecer el espacio de nombres en AIR 1.5 (
"http://ns.adobe.com/air/application/1.5") si su aplicación
utiliza alguna nueva función de AIR 1.5.
Para las aplicaciones basadas en SWF, la versión del motor de ejecución de AIR especificada en el descriptor de la
aplicación determina la versión de SWF máxima que se puede cargar como contenido inicial de la aplicación. Las
aplicaciones que especifican AIR 1.0 ó 1.1 sólo pueden utilizar archivos SWF9 (Flash Player 9) como contenido inicial,
aunque se ejecuten utilizando el motor de ejecución de AIR 1.5. Las aplicaciones que especifican AIR 1.5 pueden usar
archivos SWF9 o SWF10 (Flash Player 10) como contenido inicial. La versión de SWF determina qué versión de las
API de AIR y Flash Player están disponibles. Si un archivo SWF9 se utiliza como contenido inicial de una aplicación
de AIR 1.5, esa aplicación sólo tendrá acceso a las API de AIR 1.1 y Flash Player 9. Asimismo, no se aplicarán los
cambios de comportamiento realizados en las API existentes en AIR 1.5 o Flash Player 10. (Los cambios importantes
relacionados con la seguridad en las API constituyen una excepción en este principio y se pueden aplicar de forma
retroactiva en revisiones actuales o posteriores del motor de ejecución.)
Para las aplicaciones basadas en HTML, la versión del motor de ejecución especificada en el descriptor de la aplicación
determina qué versión de las API de AIR y Flash Player están disponibles en la aplicación. Los comportamientos de
HTML, CSS y JavaScript siempre están determinados por la versión del Webkit utilizado en el motor de ejecución de
AIR instalado, y no por el descriptor de la aplicación.
47
Si una aplicación de AIR carga contenido SWF, la versión de las API de AIR y Flash Player disponible para dicho
contenido depende del modo en que se cargue el contenido. La siguiente tabla muestra cómo la versión de la API está
determinada según el método de carga:
Forma de carga del contenidoForma en que la versión de la API se ve determinada
Contenido inicial, aplicación basada en SWFVersión SWF del archivo cargado
Contenido inicial, aplicación basada en HTMLEspacio de nombres del descriptor de la aplicación
SWF cargado mediante contenido SWFVersión del contenido de carga
Biblioteca SWF cargada mediante contenido
HTML utilizando la etiqueta <script>
SWF cargado mediante contenido HTML
utilizando las API de AIR o Flash Player (por
ejemplo, flash.display.Loader)
SWF cargado mediante contenido HTML
utilizando etiquetas <object> o <embed> (o las
API equivalentes de JavaScript)
Espacio de nombres del descriptor de la aplicación
Espacio de nombres del descriptor de la aplicación
Versión SWF del archivo cargado
Al cargar un archivo SWF de una versión distinta al contenido de carga, puede encontrarse con los siguientes
problemas:
• Carga de contenido SWF10 mediante SWF9 (o anterior): las referencias a las API de AIR 1.5 y Flash Player 10 en
el contenido cargado no se resolverán.
• Carga de contenido SWF9 (o anterior) mediante SWF10: las API modificadas en AIR 1.5 y Flash Player 10 pueden
comportarse de un modo inesperado para el contenido cargado.
minimumPatchLevel Opcional. Utilice el atributo
minimumPatchLevel para especificar el nivel de revisión mínimo
de Adobe AIR que requiere la aplicación. Las aplicaciones de AIR suelen especificar qué versión de AIR necesitan
mediante la definición del espacio de nombre en el archivo descriptor de la aplicación. El espacio de nombre cambia
para cada edición principal de AIR (por ejemplo, 1.0 ó 1.5). El nombre de espacio no cambia para las revisiones.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de las propiedades de una aplicación de AIR
Las revisiones sólo contienen una serie limitada de soluciones y ninguna modificación de las API. En general las
aplicaciones no indican qué revisión requieren. No obstante, una solución incluida en una revisión puede resolver un
problema con una aplicación. En esta situación, una aplicación puede especificar un valor para el atributo
minimumPatchLevel para asegurar que la revisión se aplique antes de instalar la aplicación. En caso necesario, el
instalador de la aplicación de AIR indica al usuario que descargue e instale la versión o revisión que se requiera. El
ejemplo siguiente muestra un elemento de la aplicación que especifica un valor para el atributo
id Una cadena de identificación exclusiva de la aplicación, conocida como ID de la aplicación. El valor del atributo se
limita a los siguientes caracteres:
• 0–9
• a–z
• A–Z
• . (punto)
• - (guión)
El valor debe contener entre 1 y 212 caracteres. Este elemento es obligatorio.
La cadena
id normalmente utiliza una jerarquía separada por puntos, en consonancia con una dirección de dominio
DNS inversa, un nombre de clase o paquete de Java™ o un identificador de tipo universal de Mac OS® X. La forma tipo
DNS no es obligatoria y AIR no crea ninguna asociación entre el nombre y los dominios DNS reales.
version Especifica la información sobre la versión para la aplicación. (No tiene nada que ver con la versión del motor
de ejecución). La cadena de la versión es un designador definido por la aplicación. AIR no realiza ninguna
interpretación de la cadena de la versión. Por ejemplo, no supone que la versión “3.0” es más actualizada que la versión
“2.0”. Ejemplos:
"1.0", ".4", "0.5", "4.9", "1.3.4a". Este elemento es obligatorio.
filename La cadena que se deberá utilizar como nombre de archivo de la aplicación (sin la extensión) al instalar ésta.
El archivo de la aplicación inicia la aplicación de AIR en el motor de ejecución. Si no se facilita ningún valor para
el nombre de archivo (valor de
filename) se utilizará también como nombre de la carpeta de instalación. Este
name,
elemento es obligatorio.
La propiedad
filename puede contener cualquier carácter Unicode (UTF-8) salvo los siguientes, cuyo uso en nombres
de archivo está prohibido en diversos sistemas de archivos:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de las propiedades de una aplicación de AIR
CarácterCódigo hexadecimal
diversos0x00 – x1F
*x2A
"x22
:x3A
>x3C
<x3E
?x3F
\ x5C
|x7C
El valor de filename no puede terminar con un punto.
name (opcional, pero recomendado) El título que aparece en el instalador de aplicaciones de AIR.
49
Si especifica un solo nodo de texto (en lugar de varios elementos
text), el instalador de aplicaciones de AIR utiliza este
nombre, cualquiera que sea el idioma seleccionado para el sistema:
<name>Test Application</name>
El esquema del descriptor de aplicaciones de AIR 1.0 sólo permite definir un nodo de texto para el nombre (y no varios
elementos de
En AIR 1.1 (o posterior) se pueden especificar varios idiomas en el elemento
text).
name. En el ejemplo siguiente se especifica
el nombre en tres idiomas (inglés, francés y español):
El atributo xml:lang para cada elemento de texto especifica un código de idioma, de conformidad con lo definido en
RFC4646 (http://www.ietf.org/rfc/rfc4646.txt).
El instalador de aplicaciones de AIR utiliza el nombre que mejor se corresponde con el idioma de la interfaz de usuario
del sistema operativo del usuario. Por ejemplo, tomemos una instalación en la que el elemento
name del archivo
descriptor de la aplicación incluye un valor para la configuración regional "es" (español). El instalador de aplicaciones
de AIR utiliza el nombre "es" si el sistema operativo identifica "es" (español) como el idioma de la interfaz de usuario.
También utiliza el nombre "es" si el idioma de la interfaz de usuario del sistema es es-ES (español de España). Sin
embargo, si el idioma de la interfaz de usuario es es-ES y el archivo descriptor de la aplicación define tanto el nombre
es-ES como el nombre es-UY, el instalador de aplicaciones de AIR utiliza el valor es-ES. Si la aplicación no define
ningún nombre que coincide con el idioma de la interfaz de usuario del sistema, el instalador de aplicaciones de AIR
utiliza el primer valor de
name que se define en el archivo descriptor de la aplicación.
Si no se especifica ningún elemento
filename como el nombre de la aplicación.
para
name, el instalador de aplicaciones de AIR muestra el nombre de archivo definido
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de las propiedades de una aplicación de AIR
El elemento name sólo define el título de la aplicación que se utiliza en el instalador de aplicaciones de AIR. El
instalador de aplicaciones de AIR admite varios idiomas: chino tradicional, chino simplificado, checo, neerlandés,
inglés, francés, alemán, italiano, japonés, coreano, polaco, portugués brasileño, ruso, español, sueco y turco. El
instalador de aplicaciones de AIR selecciona el idioma visualizado (para texto que no sea el título y la descripción de
la aplicación) con base en el idioma de la interfaz de usuario del sistema. Esta selección de idioma es independiente de
la configuración del archivo descriptor de la aplicación.
50
El elemento
nameno define las configuraciones regionales disponibles para la aplicación instalada y en
funcionamiento. Para obtener más información sobre el desarrollo de aplicaciones multilingües, consulte
“Localización de aplicaciones de AIR” en la página 347.
description (opcional) La descripción de la aplicación. Se muestra en el instalador de aplicaciones de AIR.
Si especifica un solo nodo de texto (en lugar de varios elementos para text), el instalador de aplicaciones de AIR utiliza
este nombre, cualquiera que sea el idioma seleccionado para el sistema:
<description>This is a sample AIR application.</description>
El esquema del descriptor de aplicaciones de AIR 1.0 sólo permite definir un nodo de texto para el nombre (y no varios
elementos de
En AIR 1.1 (o superior) se pueden especificar varios idiomas en el elemento
text).
description. En el ejemplo siguiente se
especifica una descripción en tres idiomas (inglés, francés y español):
<description>
<text xml:lang="en">This is a example.</text>
<text xml:lang="fr">C'est un exemple.</text>
<text xml:lang="es">Esto es un ejemplo.</text>
</description>
El atributo xml:lang para cada elemento de texto especifica un código de idioma, de conformidad con lo definido en
RFC4646 (http://www.ietf.org/rfc/rfc4646.txt).
El instalador de aplicaciones de AIR utiliza la descripción que es más similar al idioma de la interfaz de usuario del
sistema operativo del usuario. Por ejemplo, tomemos una instalación en la que el elemento
description del archivo
descriptor de la aplicación incluye un valor para la configuración regional "es" (española). El instalador de aplicaciones
de AIR utiliza el nombre "es" si el sistema del usuario identifica "es" (español) como el idioma de la interfaz de usuario.
También utiliza el nombre "es" si el idioma de la interfaz de usuario del sistema es es-ES (español de España). Sin
embargo, si el idioma de la interfaz de usuario del sistema es es-ES y el archivo descriptor de la aplicación define tanto
el nombre es-ES como el nombre es-UY, el instalador de aplicaciones de AIR utiliza el valor es-ES. Si la aplicación no
define ningún nombre que coincide con el idioma de la interfaz de usuario del sistema, el instalador de aplicaciones
de AIR utiliza el primer valor de
description que se define en el archivo descriptor de la aplicación.
Para obtener más información sobre el desarrollo de aplicaciones multilingües, consulte “Localización de aplicaciones
de AIR” en la página 347.
copyright (opcional) La información de copyright para la aplicación de AIR. En Mac OS el aviso de copyright aparece
en el cuadro de diálogo Acerca de para la aplicación instalada. En Mac OS, la información de copyright también se
utiliza en el campo NSHumanReadableCopyright del archivo Info.plist para la aplicación.
Definición de la carpeta de instalación y la carpeta de menús de programa
Las carpetas de instalación y de menús de programa se definen con la siguiente configuración de propiedades:
installFolder (opcional) Identifica el subdirectorio del directorio de instalación predeterminado.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de las propiedades de una aplicación de AIR
En Windows el subdirectorio de instalación predeterminado es el directorio Archivos de programa. En Mac OS es el
directorio /Aplicaciones. En Linux, es /opt/. Por ejemplo, si la propiedad
una aplicación lleva el nombre
"EjemploApl", la aplicación se instala en C:\Archivos de
installFolder está definida en "Acme" y
programa\Acme\ExampleApp en Windows, en /Aplicaciones/Acme/Example.app en MacOS y
/opt/Acme/ExampleApp en Linux.
Utilice la barra diagonal (/) como carácter separador entre directorios si desea especificar un subdirectorio anidado,
como en el ejemplo siguiente:
<installFolder>Acme/Power Tools</installFolder>
La propiedad installFolder puede contener cualquier carácter Unicode (UTF-8) excepto aquellos cuyo uso en
nombres de archivo está prohibido en diversos sistemas de archivos (para ver la lista de excepciones, consulte la
anterior propiedad
filename).
51
La propiedad
se instala en un subdirectorio del directorio de instalación predeterminado basado en la propiedad
installFolder es opcional. Si no se especifica ninguna propiedad para installFolder, la aplicación
name.
programMenuFolder (Opcional) Identifica dónde deben guardarse los accesos directos a la aplicación en el menú
Todos los programas del sistema operativo Windows o en el menú de aplicaciones de Linux. (En otros sistemas
operativos, en la actualidad se hace caso omiso a esta opción). Las restricciones sobre el número de caracteres que se
admiten en el valor de la propiedad son las mismas que para la propiedad
installFolder. No utilice una barra
diagonal (/) como último carácter de este valor.
Definición de las propiedades de la ventana inicial de la aplicación
Cuando se carga una aplicación de AIR, el motor de ejecución utiliza los valores del elemento initialWindow para
crear la ventana inicial de la aplicación. Luego el motor de ejecución carga en la ventana el archivo SWF o HTML
especificado en el elemento
Los elementos secundarios del elemento initialWindow definen las propiedades de la ventana en la que se carga el
archivo de contenido raíz.
content El valor especificado para el elemento
content es la URL para el archivo principal de contenido de la
aplicación. Éste será un archivo SWF o un archivo HTML. La URL se especifica relativa a la raíz de la carpeta de
instalación de la aplicación. (Al ejecutar una aplicación de AIR con ADL, la URL se indica relativa a la carpeta que
contiene el archivo descriptor de la aplicación. Se puede utilizar el parámetro
root-dir de ADL para especificar otro
directorio raíz).
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de las propiedades de una aplicación de AIR
Nota: al tratarse como una URL el valor del elemento content, los caracteres del nombre del archivo de contenido deben
codificarse como URL de acuerdo con las reglas definidas en RFC 1738. Los caracteres de espacio, por ejemplo, deben
codificarse como
%20.
title (Opcional) El título de la ventana.
52
systemChrome (Opcional) Si este atributo se define en
proporcionado por el sistema operativo. Si lo define en
standard, se mostrará el fondo cromático estándar
none, no se mostrará ningún fondo cromático del sistema. La
opción de fondo cromático no puede modificarse durante el tiempo de ejecución.
transparent (opcional) Defínalo en
"true" si desea que la ventana de la aplicación admita la mezcla alfa. Una ventana
con transparencia puede dibujarse más lentamente y necesitar más memoria. La opción de transparencia no puede
modificarse durante el tiempo de ejecución.
Importante: Sólo se puede definir
visible (opcional) Defínalo en
predeterminado es
false.
transparent en true si systemChrometiene el valor.
true si desea que la ventana principal quede visible en cuanto se haya creado. El valor
Puede convenir dejar la ventana principal oculta al principio para que no se muestren los ajustes de la posición y el
tamaño de la ventana y la disposición del contenido. Se podrá mostrar después la ventana llamando al método
activate() de la ventana o cambiando la propiedad visible a true. Para obtener más información, consulte
“Trabajo con ventanas nativas” en la página 60.
x, y, width, height (opcionales) Límites iniciales de la ventana principal de la aplicación. Si no se definen estos valores,
el tamaño de la ventana quedará definido por las opciones del archivo SWF raíz o, en el caso de HTML, por el sistema
operativo.
minSize, maxSize (opcionales) Tamaños mínimo y máximo de la ventana. Si no se definen estos valores, los
determinará el sistema operativo.
minimizable, maximizable, resizable (opcionales) Especifican si se puede minimizar, maximizar y redimensionar la
ventana. Estas opciones tienen el valor predeterminado
true.
Nota: en los sistemas operativos como Mac OS X en los cuales la maximización de las ventanas es una operación de
redimensionamiento, para que la ventana no cambie de tamaño, tanto "maximizable" como "resizable" deben definirse
false.
en
Especificación de archivos de iconos
La propiedad icon especifica un archivo de icono (o varios) a utilizar para la aplicación. Los iconos son opcionales. Si
no se define la propiedad
La ruta se indica relativa al directorio raíz de la aplicación. Los archivos de iconos deben tener el formato PNG. Se
pueden especificar todos los tamaños de icono siguientes:
Si hay un elemento para un tamaño determinado, la imagen que contiene el archivo debe ser exactamente del tamaño
especificado. Si no se proporcionan todos los tamaños, el sistema operativo ajusta el tamaño más parecido para un uso
determinado del icono.
icon, el sistema operativo muestra un icono predeterminado.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de las propiedades de una aplicación de AIR
Nota: los iconos especificados no se añaden automáticamente al paquete de AIR. Los archivos de iconos deben estar
incluidos en sus lugares relativos correctos cuando se empaqueta de la aplicación.
Para obtener el mejor resultado posible, proporcione una imagen para cada uno de los tamaños disponibles. Asegúrese
también de que los iconos sean de buen aspecto tanto en el modo de color de 16 bits como en el de 32 bits.
Interfaz de usuario personalizada para actualizaciones
AIR instala y actualiza las aplicaciones utilizando los cuadros de diálogo de instalación predeterminados. No obstante,
puede proporcionar su propia interfaz para actualizar una aplicación. Para indicar que la aplicación debe encargarse
del proceso de actualización, defina el elemento
<customUpdateUI>true</customUpdateUI>
Cuando la versión instalada de la aplicación tiene el elemento customUpdateUI definido en true y el usuario hace
doble clic en el archivo de AIR para una nueva versión o instala una actualización de la aplicación utilizando la función
de instalación integrada, el motor de ejecución abre la versión instalada de la aplicación en lugar del instalador de
aplicaciones de AIR predeterminado. La lógica de la aplicación determina entonces cómo continuar con la operación
de actualización. (Para que se lleve a cabo una actualización, el ID de la aplicación y el ID del editor que figuran en el
archivo de AIR deben coincidir con los de la aplicación instalada).
customUpdateUI en true:
53
Nota: el mecanismo
customUpdateUI sólo entra en juego si la aplicación ya está instalada y el usuario hace doble clic
en el archivo de instalación de AIR que contiene una actualización, o si instala una actualización de la aplicación
utilizando la función de instalación integrada. Puede descargar una actualización e iniciarla a través de la lógica de su
propia aplicación, visualizando la interfaz de usuario personalizada según convenga, esté o no
definido en
true.
customUpdateUI
Para obtener más información, consulte “Actualización de aplicaciones de AIR” en la página 331.
Inicio de la aplicación desde el navegador
Si se especifica la siguiente opción, se podrá iniciar la aplicación de AIR instalada utilizando la función de invocación
desde el navegador (el usuario selecciona un vínculo en una página en el navegador Web):
true, asegúrese de tener en cuenta las posibles consecuencias para la seguridad, descritas en
“Invocación desde el navegador” en la página 295.
Para obtener más información, consulte “Instalación y ejecución de aplicaciones de AIR desde una página Web” en la
página 315.
Declaración de asociaciones con tipos de archivos
El elemento fileTypes permite declarar los tipos de archivos con que se puede asociar una aplicación de AIR. Cuando
se instala una aplicación de AIR, los tipos de archivos declarados se registran en el sistema operativo y, si estos tipos
de archivos aún no se encuentran asociados con ninguna otra aplicación, se asocian con la aplicación de AIR. Para
suprimir una asociación existente entre un tipo de archivo y otra aplicación, utilice el método en tiempo de ejecución
NativeApplication.setAsDefaultApplication() (preferentemente con el permiso del usuario).
Nota: los métodos del motor de ejecución sólo pueden manejar asociaciones para los tipos de archivos declarados en el
descriptor de la aplicación.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Configuración de las propiedades de una aplicación de AIR
El elemento fileTypes es opcional. Puede contener varios elementos fileType.
54
Los elementos
name y extension son obligatorios para cada declaración de fileType que se incluya. Se puede utilizar
el mismo nombre con varias extensiones. La extensión identifica el tipo de archivo. (Cabe observar que la extensión se
especifica sin el punto que la precede). El elemento
usuario del sistema operativo.
contentType es necesario en AIR 1.5 (era opcional en AIR 1.0 y 1.1). La propiedad
description es opcional; lo presenta al usuario la interfaz de
ayuda al sistema operativo a localizar la mejor aplicación para abrir un archivo en determinadas circunstancias. El
valor debe ser el tipo MIME del contenido del archivo. Se debe tener en cuenta que el valor se omite en Linux si el tipo
de archivo ya se ha registrado y dispone de un tipo MIME asignado.
Se pueden especificar iconos para la extensión de archivo utilizando el mismo formato que el elemento "icon" de la
aplicación. Los archivos de iconos también deben incluirse en el archivo de instalación de AIR (no se colocan
automáticamente en el paquete).
Si hay un tipo de archivo asociado con una aplicación de AIR, cada vez que un usuario abra un archivo de ese tipo se
invocará la aplicación. Si la aplicación ya está funcionando, AIR distribuye el objeto InvokeEvent a la instancia que se
esté ejecutando. En caso contrario, AIR iniciará primero la aplicación. En ambos casos la ruta al archivo puede
recuperarse del objeto InvokeEvent distribuido por el objeto NativeApplication. Puede utilizarse esta ruta para abrir
el archivo.
Para obtener más información, consulte “Gestión de asociaciones con archivos” en la página 301 y “Captura de
argumentos de la línea de comandos” en la página 293.
Capítulo 9: Funcionalidad específica de
Adobe AIR
En este capítulo se presenta información general sobre la funcionalidad de Adobe® AIR™ que no está disponible para
el contenido SWF que se ejecuta en Adobe® Flash® Player.
Clases específicas de AIR
Las siguientes clases del motor de ejecución son específicas de Adobe AIR. No están disponibles para el contenido SWF
que se ejecute en el navegador:
ClasePaquete
ApplicationUpdaterair.update
ApplicationUpdaterUIair.update
55
BrowserInvokeEventflash.events
Clipboardflash.desktop
ClipboardFormatsflash.desktop
ClipboardTransferModeflash.desktop
CompressionAlgorithmflash.utils
DockIconflash.desktop
DownloadErrorEventair.update.events
DRMAuthenticateEvent flash.events
DRMErrorEvent flash.events
DRMStatusEvent flash.events
EncryptedLocalStore flash.data
File flash.filesystem
FileListEventflash.events
FileModeflash.filesystem
FileStreamflash.filesystem
FocusDirectionflash.display
HTMLHistoryItemflash.html
HTMLHostflash.html
HTMLLoaderflash.html
HTMLPDFCapabilityflash.html
HTMLUncaughtScriptExceptionEventflash.events
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
ClasePaquete
HTMLWindowCreateOptionsflash.html
Iconflash.desktop
InteractiveIconflash.desktop
InvokeEventflash.events
NativeApplicationflash.desktop
NativeDragActionsflash.desktop
NativeDragEventflash.events
NativeDragManagerflash.desktop
NativeDragOptionsflash.desktop
NativeMenuflash.display
NativeMenuItemflash.display
NativeWindowflash.display
NativeWindowBoundsEventflash.events
56
Funcionalidad específica de Adobe AIR
NativeWindowDisplayStateflash.display
NativeWindowDisplayStateEventflash.events
NativeWindowInitOptionsflash.display
NativeWindowResizeflash.display
NativeWindowSystemChromeflash.display
NativeWindowTypeflash.display
NotificationTypeflash.desktop
OutputProgressEventflash.events
RevocationCheckSettingsflash.security
Screenflash.display
ScreenMouseEventflash.events
SignatureStatusflash.security
SignerTrustSettingsflash.security
SQLCollationTypeflash.data
SQLColumnNameStyleflash.data
SQLColumnSchemaflash.data
SQLConnectionflash.data
SQLErrorflash.errors
SQLErrorEventflash.events
SQLErrorOperationflash.errors
SQLEventflash.events
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
ClasePaquete
SQLIndexSchemaflash.data
SQLResultflash.data
SQLSchemaflash.data
SQLSchemaResultflash.data
SQLStatementflash.data
SQLTableSchemaflash.data
SQLTransactionLockTypeflash.data
SQLTriggerSchemaflash.data
SQLUpdateEventflash.events
SQLViewSchemaflash.data
StatusFileUpdateErrorEventair.update.events
StatusFileUpdateEventair.update.events
StatusUpdateErrorEventair.update.events
57
Funcionalidad específica de Adobe AIR
StatusUpdateEventair.update.events
SystemTrayIconflash.desktop
UpdateEventair.update.events
Updaterflash.desktop
URLRequestDefaultsflash.net
XMLSignatureValidatorflash.utils
Además, el paquete flash.security incluye la interfaz IURIDereferencer, que es específica de AIR.
Clases del motor de ejecución con funcionalidad
específica de AIR
Las siguientes clases están disponibles para el contenido SWF que se ejecuta en el navegador, pero AIR ofrece
propiedades o métodos adicionales:
Clase Método o propiedad
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Funcionalidad específica de Adobe AIR
58
Capabilities
Event DISPLAYING
FileReference
HTTPStatusEvent HTTP_RESPONSE_STATUS
KeyboardEvent commandKey
LoaderContextallowLoadBytesCodeExecution
LoaderInfo parentSandboxBridge
languages
EXITING
HTML_BOUNDS_CHANGE
HTML_DOM_INITIALIZE
HTML_RENDER
LOCATION_CHANGE
NETWORK_CHANGE
USER_IDLE
USER_PRESENT
uploadUnencoded()
responseURL
responseHeaders
controlKey
childSandboxBridge
NetStream resetDRMVouchers()
setDRMAuthenticationCredentials()
URLRequest
URLStream Evento httpResponseStatus
Stage nativeWindow
Security APPLICATION
followRedirects
manageCookies
shouldAuthenticate
shouldCacheResponse
userAgent
userCache
setLoginCredentials()
La mayoría de estos nuevos métodos y propiedades sólo están disponibles para contenido que se encuentra en el
entorno limitado de seguridad de la aplicación de AIR. No obstante, los nuevos integrantes de las clases URLRequest
también están disponibles para el contenido que se ejecuta en otros entornos limitados.
Los métodos
algorithm, que permite seleccionar entre la compresión deflate y zlib. Este parámetro está disponible únicamente en
ByteArray.compress() y ByteArray.uncompress() incluyen cada uno un nuevo parámetro,
el contenido que se ejecuta en AIR.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Funcionalidad específica de Adobe AIR
Clases del marco de supervisión del servicio
El paquete air.net contiene clases para la detección a través de la red. Este paquete está disponible solamente para
contenido que se ejecuta en Adobe AIR. Viene incluido en el archivo ServiceMonitor.swc.
El paquete incluye las siguientes clases:
• ServiceMonitor
• SocketMonitor
• URLMonitor
59
Capítulo 10: Trabajo con ventanas nativas
Puede utilizar las clases proporcionadas por la API de manejo de ventanas nativas de Adobe® AIR® para crear y
gestionar ventanas de escritorio.
Información adicional sobre ventanas nativas
Dispone de información adicional sobre la API de manejo de ventanas nativas y el proceso de trabajo con ellas en las
siguientes referencias:
Inicios rápidos (Centro de desarrollo de Adobe AIR) (en inglés)
• Interacción con una ventana
• Personalización del aspecto de una ventana nativa
• Creación de ventanas superpuestas
• Control del orden de visualización de las ventanas
• Creación de ventanas no rectangulares de tamaño modificable
60
Referencia del lenguaje
• NativeWindow
• NativeWindowInitOptions
Artículos y ejemplos del Centro de desarrollo de Adobe
• Centro de desarrollo de Adobe AIR para Flash (en inglés); busque "AIR windows".
Aspectos básicos de ventanas de AIR
AIR proporciona una API de ventana fácil de usar y válida para todas las plataformas con la que es posible crear
ventanas nativas de sistema operativo utilizando Flash®, Flex™ y técnicas de programación HTML.
Con AIR, las posibilidades de desarrollar el aspecto de su aplicación son enormes. Las ventanas que se crean pueden
presentar un aspecto similar a una aplicación de escritorio estándar, coincidiendo con el estilo de Apple cuando se
ejecutan en Mac, ajustándose a las convenciones de Microsoft cuando se ejecutan en Windows y en armonía con el
administrador de ventanas de Linux; todo ello sin incluir ninguna línea de código de plataforma específica. También
puede utilizar el fondo cromático de aspecto configurable de la arquitectura de Flex para establecer su propio estilo sin
importar dónde se ejecute la aplicación. Incluso puede dibujar su propio fondo cromático de ventana con ilustraciones
vectoriales o de mapas de bits con compatibilidad total de transparencia y valores alfa que se fundan con el escritorio.
¿Está cansado de tanta ventana rectangular? Dibuje una redondeada.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
Ventanas de AIR
AIR admite tres API diferentes para trabajar con ventanas:
• La clase NativeWindow orientada a ActionScript proporciona la API de gestión de ventanas de nivel más bajo.
Utilice NativeWindows en ActionScript y aplicaciones creadas con Flash CS. Considere la ampliación de la clase
NativeWindow para que se especialice en las ventanas utilizadas en la aplicación.
• Las clases del marco de Flex, mx:WindowedApplication y mx:Window, proporcionan un “envolvente” de Flex para
la clase NativeWindow. El componente WindowedApplication sustituye al componente Application cuando se
crea una aplicación de AIR con Flex y siempre se debe usar como ventana inicial en la aplicación de Flex.
• En el entorno HTML, se puede usar la clase Window de JavaScript, tal y como se haría en una aplicación Web
basada en navegador. Las llamadas a los métodos Window de JavaScript se reenvían al objeto de ventana nativa
subyacente.
Ventanas de ActionScript
Al crear ventanas con la clase NativeWindow, puede utilizar el escenario y la lista de visualización de Flash Player
directamente. Para añadir un objeto visual a una ventana NativeWindow, añada el objeto a la lista de visualización del
escenario de la ventana o a otro contenedor de objetos de visualización del escenario.
Ventanas de la arquitectura de Flex
La arquitectura de Flex define sus propios componentes que agrupan la API NativeWindow. Estos componentes
(mx:WindowedApplication y mx:Window) no se pueden utilizar fuera de la arquitectura, por lo que tampoco se
pueden utilizar en aplicaciones de AIR desarrolladas con Flash CS.
61
Ventanas HTML
Cuando se crean ventanas HTML, se utiliza HTML, CSS y JavaScript para visualizar el contenido. Para añadir un
objeto visual a una ventana HTML, añada el contenido al DOM HTML. Las ventanas HTML son una categoría especial
de NativeWindow. El host de AIR define una propiedad
nativeWindow en las ventanas HTML que proporciona
acceso a la instancia subyacente de NativeWindow. Puede utilizar esta propiedad para acceder a las propiedades,
métodos y eventos de NativeWindow que se describen en esta sección.
Nota: el objeto Window de JavaScript también cuenta con métodos para crear scripts de la ventana que los contiene,
como por ejemplo,
moveTo() y close(). Si dispone de varios métodos al mismo tiempo, puede utilizar el que más le
convenga.
Ventana inicial de la aplicación
AIR crea para el usuario la primera ventana de la aplicación automáticamente. AIR define las propiedades y el
contenido de la ventana a partir de los parámetros especificados en el elemento
initialWindow del archivo descriptor
de la aplicación.
Si el contenido raíz es un archivo SWF, AIR crea una instancia de NativeWindow, carga el archivo SWF y lo añade al
escenario de la ventana. Si el contenido raíz es un archivo HTML, AIR crea una ventana HTML y carga el contenido
HTML.
Para obtener más información sobre las propiedades de ventana especificadas en el descriptor de la aplicación,
consulte “Estructura del archivo descriptor de la aplicación” en la página 45.
Clases de ventanas nativas
La API de gestión de ventanas nativas contiene las siguientes clases:
PaqueteClases
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
62
flash.display
• NativeWindow
• NativeWindowInitOptions
• NativeWindowDisplayState
• NativeWindowResize
• NativeWindowSystemChrome
• NativeWindowType
Las constantes de cadena de la ventana se definen en las siguientes clases:
• NativeWindowDisplayState
• NativeWindowResize
• NativeWindowSystemChrome
• NativeWindowType
flash.events
• NativeWindowBoundsEvent
• NativeWindowDisplayStateEvent
Flujo de eventos de ventanas nativas
Las ventanas nativas distribuyen eventos para notificar a los componentes pertinentes sobre cambios importantes que
se han producido o pueden producirse. Muchos eventos relacionados con ventanas se distribuyen por parejas. El
primer evento advierte sobre un cambio que va a producirse. El segundo evento anuncia que el cambio se ha realizado.
Puede cancelar un evento de advertencia, pero no uno de notificación. En la siguiente secuencia se muestra el flujo de
eventos que se producen cuando un usuario hace clic en el botón Maximizar de una ventana:
1 El objeto NativeWindow distribuye un evento displayStateChanging.
2 Si ningún detector registrado lo cancela, la ventana se maximiza.
3 El objeto NativeWindow distribuye un evento displayStateChange.
Además, el objeto NativeWindow también distribuye eventos para los cambios relacionados con el tamaño y la
posición de la ventana. La ventana no distribuye eventos de advertencia para estos cambios relacionados. Los
eventos relacionados son:
a Un evento move se distribuye si la esquina superior izquierda de la ventana se mueve por maximización.
b Un evento resize se distribuye si el tamaño de la ventana cambia por maximización.
Un objeto NativeWindow distribuye una secuencia similar de eventos cuando una ventana se minimiza, se restaura,
se cierra, se mueve y se cambia de tamaño.
Los eventos de advertencia sólo se distribuyen si se inicia un cambio del fondo cromático de la ventana o por
cualquier otro mecanismo controlado por el sistema operativo. Cuando se llama a un método de ventana para que
cambie el tamaño, la posición o el estado de visualización de la ventana, ésta sólo distribuye un evento para anunciar
el cambio. Si lo desea, puede distribuir un evento de advertencia con el método
dispatchEvent() de la ventana y,
después, ver si el evento de advertencia se ha cancelado antes de realizar el cambio.
Para obtener más información sobre las clases, métodos, propiedades y eventos de API de ventana, consulte el
manual Referencia del lenguaje y componentes ActionScript 3.0 (http://www.adobe.com/go/learn_flash_aslr_es).
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
Para obtener información general sobre la lista de visualización de Flash, consulte la sección “Programación de
visualización” del manual Programación con Adobe ActionScript 3.0
(http://www.adobe.com/go/learn_fl_cs4_programmingAS3_es).
Propiedades que controlan el estilo y el comportamiento de una ventana
nativa
Las siguientes propiedades controlan el aspecto y el comportamiento básicos de una ventana:
• type
• systemChrome
• transparent
Al crear una ventana, estas propiedades se establecen en el objeto NativeWindowInitOptions transferido al
constructor de la ventana. AIR lee las propiedades de la ventana inicial de la aplicación desde el descriptor de la
aplicación. (Salvo la propiedad
normal.) Las propiedades no se pueden modificar una vez creada la ventana.
en
type, que no se puede establecer en el descriptor de la aplicación y siempre se define
63
Algunos ajustes de estas propiedades son incompatibles entre sí:
standard si transparent es true o si type es lightweight.
systemChrome no se puede establecer como
Tipos de ventanas
Los tipos de ventanas de AIR combinan atributos de fondo cromático y visibilidad del sistema operativo nativo para
crear tres tipos de ventanas funcionales. Puede utilizar las constantes definidas en la clase NativeWindowType para
hacer referencia a los nombres de los tipos en el código. AIR proporciona los siguientes tipos de ventanas:
TipoDescripción
NormalUna ventana normal. La ventanas normales utilizan el fondo cromático de pantalla completa y se muestran en
UtilidadesUna paleta de herramientas. Las ventanas de utilidades utilizan una versión más ligera del fondo cromático del
LigerasLas ventanas ligeras no tienen fondo cromático y no aparecen en la barra de tareas de Windows ni en el menú
la barra de tareas de Windows o en el menú Ventana de Mac OS X.
sistema y no se muestran en la barra de tareas de Windows ni en el menú Ventana de Mac OS X.
Ventana de Mac OS X. Además, las ventanas ligeras no disponen de menú Sistema (Alt+Barra espaciadora) en
Windows. El uso de ventanas ligeras está recomendado para mensajes emergentes de notificación o controles,
como cuadros emergentes áreas de visualización temporal. Si utiliza el
systemChrome debe establecerse como none.
type en ventanas ligeras,
Fondo cromático de una ventana
El fondo cromático de una ventana es el conjunto de controles que permiten a los usuarios manipular la ventana en
un entorno de escritorio. Los elementos del fondo cromático son la barra de título, los botones de la barra de título, los
bordes y los selectores de cambio de tamaño.
Fondo cromático del sistema
Puede establecer la propiedad
systemChrome como standard o como none. Seleccione el valor standard de fondo
cromático para darle a la ventana el conjunto de controles creados e ideados por el sistema operativo del usuario.
Seleccione
none para proporcionar su propio fondo cromático a la ventana. Utilice las constantes definidas en la clase
NativeWindowSystemChrome para hacer referencia a los parámetros del fondo cromático del sistema en el código.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
La gestión del fondo cromático del sistema corre a cargo del propio sistema. La aplicación no tiene acceso directo a los
controles, pero puede reaccionar ante la distribución de eventos cuando se utilicen los controles. Si se utiliza el fondo
cromático estándar para una ventana, la propiedad
debe ser
normal o utility.
transparent debe establecerse como false y la propiedad type
Fondo cromático personalizado
Cuando se crea una ventana sin fondo cromático del sistema, es preciso añadir controles de fondo cromático propios
para controlar la interacción entre el usuario y la ventana. También, si lo desea, puede crear ventanas no rectangulares
y transparentes.
Transparencia de la ventana
Para permitir la mezcla alfa en una ventana de escritorio o en cualquier otra, establezca la propiedad transparent de
la ventana como
modificarla.
Una ventana transparente no tiene fondo predeterminado. Cualquier área de la ventana que no contenga objetos
dibujados por la aplicación es invisible. Si un objeto visualizado tiene un valor alfa menor que uno, cualquier elemento
debajo del objeto será transparente, incluidos los demás objetos de visualización de la misma ventana, de otras
ventanas y del escritorio. La representación de zonas grandes de mezcla alfa lleva su tiempo, por lo que el efecto debe
utilizarse con precaución.
true. Debe establecer la propiedad transparent antes de crear la ventana y no es posible
64
Las ventanas transparentes resultan útiles cuando se quieren crear aplicaciones con bordes de forma irregular,
aplicaciones que “desaparecen” o aplicaciones invisibles.
Importante: En Linux, los eventos de ratón no pasan por píxeles completamente transparentes. Se debe evitar la creación
de ventanas con áreas grandes y completamente transparentes, ya que se puede bloquear de forma invisible el acceso del
usuario a otras ventanas o elementos en su escritorio. En Mac OS X y Windows, los eventos de ratón no pasan por píxeles
completamente transparentes.
La transparencia no se puede aplicar a ventanas con fondo cromático del sistema. Además, el contenido SWF y PDF
del HTML no se visualiza en las ventanas transparentes. Para obtener más información, consulte “Consideraciones al
cargar el contenido SWF o PDF en una página HTML” en la página 260.
En algunos sistemas operativos, no se admite la transparencia debido a la configuración concreta del hardware o del
software, o como consecuencia de las opciones de visualización del usuario. Si no se admite transparencia, la aplicación
se compone con un fondo negro. En estos casos, cualquier área transparente de la aplicación se visualiza en negro
opaco.
La propiedad
false, por ejemplo, puede mostrar un diálogo de advertencia al usuario, o una interfaz rectangular, básica y no
es
NativeWindow.supportsTransparency indica si la ventana puede ser transparente. Si esta propiedad
transparente. Tenga en cuenta que la transparencia se admite siempre en los sistemas operativos Mac y Windows. La
compatibilidad con los sistemas operativos Linux requiere un administrador de ventanas de composición, pero
aunque este administrador esté activo, la transparencia puede no estar disponible debido a las opciones de
visualización del usuario o a la configuración de hardware.
Transparencia en una ventana de aplicación HTML
De forma predeterminada, el fondo del contenido HTML se visualiza en las ventanas HTML y en los objetos
HTMLLoader como opaco, incluso si la ventana que lo contiene es transparente. Para desactivar el fondo
predeterminado para el contenido HTML, establezca la propiedad
siguiente ejemplo crea un objeto HTMLLoader y desactiva el fondo predeterminado:
paintsDefaultBackground como false. El
var html:HTMLLoader = new HTMLLoader();
html.paintsDefaultBackground = false;
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
Este ejemplo utiliza JavaScript para desactivar el fondo predeterminado de una ventana HTML:
Si un elemento del documento HTML establece un color de fondo, el fondo de dicho elemento no es transparente. No
está permitido establecer un valor de transparencia (u opacidad) parcial. Sin embargo, se puede utilizar un gráfico
transparente en formato PNG como fondo de página o de elemento de página para conseguir un efecto visual parecido.
Catálogo de ventana visual
En la siguiente tabla se resumen los efectos visuales de las distintas combinaciones de parámetros de propiedades de
ventanas en los sistemas operativos Mac OS X, Windows y Linux:
65
Parámetros de ventanaMac OS XMicrosoft WindowsLinux
Type: normal
SystemChrome: estándar
Transparent: false
Type: utility
SystemChrome: estándar
Transparent: false
*
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
66
Parámetros de ventanaMac OS XMicrosoft WindowsLinux
Type: cualquiera
SystemChrome: ninguno
Transparent: false
Type: cualquiera
SystemChrome: ninguno
Transparent: true
mxWindowedApplication o
mx:Window
Type: cualquiera
SystemChrome: ninguno
Transparent: true
*
*
Ubuntu con el administrador de ventanas Compiz
Nota: los siguientes elementos del fondo cromático del sistema no se admiten en AIR: la barra de herramientas de Mac
OS X, el icono proxy de Mac OS X, los iconos de barra de título de Windows y otros fondos cromáticos alternativos.
Creación de ventanas
AIR crea automáticamente la primera ventana de la aplicación, pero el usuario puede crear más ventanas adicionales
si lo necesita. Para crear una ventana nativa, utilice el método NativeWindow. Para crear una ventana HTML, utilice
el método
de JavaScript.
Especificación de propiedades de inicialización de una ventana
Las propiedades de inicialización de una ventana no se pueden modificar una vez creada la ventana de escritorio. Estas
propiedades invariables y sus valores predeterminados son:
createRootWindow() de HTMLLoader o, desde un documento HTML, llame al método window.open()
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Propiedad Valor predeterminado
systemChrome standard
type normal
transparent false
maximizable true
minimizable true
resizable true
Trabajo con ventanas nativas
Establezca las propiedades de la ventana inicial creada por AIR en el archivo descriptor de la aplicación. La ventana
principal de una aplicación de AIR siempre es de tipo normal. (Se pueden especificar propiedades adicionales de la
ventana en el archivo descriptor, por ejemplo,
visible, width y height; estas propiedades se pueden modificar en
cualquier momento.)
Puede establecer las propiedades de otras ventanas nativas y HTML creadas por la aplicación mediante la clase
NativeWindowInitOptions. Cuando se crea una ventana, se debe transferir un objeto NativeWindowInitOptions
especificando las propiedades de la ventana en la función constructora NativeWindow o en el método
createRootWindow() de HTMLLoader.
67
El siguiente código crea un objeto NativeWindowInitOptions para una ventana de utilidades:
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
options.systemChrome = NativeWindowSystemChrome.STANDARD;
options.type = NativeWindowType.UTILITY
options.transparent = false;
options.resizable = false;
options.maximizable = false;
No está permitido establecer systemChrome como standard si transparent es true o type es lightweight.
Nota: no es posible definir las propiedades de inicialización de una ventana creada con la función
window.open() de
JavaScript. Sin embargo, sí se puede anular el modo en que se crean estas ventanas implementando su propia clase
HTMLHost. Consulte “Gestión de llamadas JavaScript a window.open()” en la página 269 para obtener más
información.
Creación de la ventana inicial de la aplicación
AIR crea la ventana inicial de la aplicación a partir de las propiedades especificadas en el descriptor de la aplicación y
carga el archivo al que se hace referencia en el elemento del contenido. El elemento de contenido debe hacer referencia
a un archivo SWF o HTML.
La ventana inicial puede ser la ventana principal de la aplicación o simplemente una o varias ventanas adicionales que
se abren. No tienen por qué ser visibles.
La herramienta de edición de Flash crea automáticamente el archivo SWF y añade la referencia adecuada al descriptor
de la aplicación cuando se prueba o se publica un proyecto de AIR. La línea de tiempo principal sirve de punto de
entrada para la aplicación.
Cuando se inicia la aplicación, AIR crea una ventana y carga el archivo SWF de la aplicación. Para controlar la ventana
de escritorio con ActionScript, utilice la propiedad
nativeWindow del objeto Stage para obtener una referencia al
objeto NativeWindow. Posteriormente, puede establecer las propiedades de la ventana y empezar a llamar a los
métodos.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
El siguiente ejemplo activa la ventana principal maximizada (desde el primer fotograma de un archivo FLA de Flash):
import flash.display.NativeWindow;
var mainWindow:NativeWindow = this.stage.nativeWindow;
mainWindow.maximize();
mainWindow.activate();
Creación de una ventana nativa
Para crear una ventana NativeWindow, transfiera un objeto NativeWindowInitOptions al constructor
NativeWindow:
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
options.systemChrome = NativeWindowSystemChrome.STANDARD;
options.transparent = false;
var newWindow:NativeWindow = new NativeWindow(options);
La ventana no se muestra hasta que se establece la propiedad visible como true o se llama al método activate().
Una vez creada la ventana, puede inicializar sus propiedades y cargar contenido utilizando la propiedad de escenario
y técnicas de lista de visualización de Flash.
68
En casi todos los casos, debe establecer la propiedad
noScale (utilice la constante StageScaleMode.NO_SCALE). Los modos de escala de Flash están diseñados para
scaleMode del escenario de una nueva ventana nativa como
situaciones en las que el autor de la aplicación desconoce la relación de aspecto del espacio de visualización de la
aplicación. Los modos de escala permiten al autor escoger la opción menos arriesgada: recortar el contenido,
estrecharlo o apretarlo, o incluso llenarlo con un espacio vacío. Como el desarrollador controla el espacio de
visualización en AIR (el marco de la ventana), es posible cambiar el tamaño de la ventana para que se ajuste al
contenido, o cambiar el tamaño sin aplicar ningún ajuste.
Nota: para determinar los tamaños máximo y mínimo de ventana admitidos en el sistema operativo actual, utilice las
siguientes propiedades estáticas de NativeWindow:
var maxOSSize:Point = NativeWindow.systemMaxSize;
var minOSSize:Point = NativeWindow.systemMinSize;
Creación de una ventana HTML
Para crear una ventana HTML, puede llamar al método Window.open() de JavaScript, o llamar al método
createRootWindow() de la clase HTMLLoader de AIR.
El contenido HTML de cualquier entorno limitado de seguridad puede utilizar el método
JavaScript. Si el contenido se ejecuta fuera del entorno limitado de la aplicación, se puede llamar al método
sólo como respuesta a la interacción del usuario, por ejemplo, cuando hace clic con el ratón o cuando pulsa una tecla.
Cuando se llama a
open(), se crea una ventana con fondo cromático del sistema para visualizar el contenido en la
Nota: puede ampliar la clase HTMLHost en ActionScript para personalizar la ventana creada con la función
window.open() de JavaScript. Consulte “Ampliación de la clase HTMLHost” en la página 264.
El contenido del entorno limitado de seguridad de la aplicación tiene acceso al método más potente para la creación
de ventanas:
HTMLLoader.createRootWindow(). Con este método, es posible especificar todas las opciones de
creación de una ventana nueva. El siguiente código JavaScript, por ejemplo, crea una ventana ligera sin fondo
cromático del sistema de 300x400 píxeles de tamaño:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
var options = new air.NativeWindowInitOptions();
options.systemChrome = "none";
options.type = "lightweight";
var windowBounds = new air.Rectangle(200,250,300,400);
newHTMLLoader = air.HTMLLoader.createRootWindow(true, options, true, windowBounds);
newHTMLLoader.load(new air.URLRequest("xmpl.html"));
Trabajo con ventanas nativas
Nota: si el contenido cargado por una nueva ventana se encuentra fuera del entorno limitado de seguridad de la
aplicación, el objeto window no tiene las siguientes propiedades de AIR:
runtime, nativeWindow o htmlLoader.
69
Las ventanas creadas con el método
propiedades
parent y opener del objeto Window de JavaScript son null. La ventana que se abre puede acceder al
createRootWindow() son independientes de la ventana que se abre. Las
objeto Window de la nueva ventana utilizando la referencia a HTMLLoader devuelta por la función
createRootWindow(). En el contexto del ejemplo anterior, la sentencia newHTMLLoader.window haría referencia al
objeto Window de JavaScript de la ventana creada.
Nota: se puede llamar a la función
createRootWindow() desde JavaScript y ActionScript.
Cómo añadir contenido a una ventana
La forma en que se añade contenido a las ventanas de AIR depende del tipo de ventana. Puede crear un clip de película
y utilizar la línea de tiempo para controlar el estado de la aplicación. Con HTML, puede declarar definiciones del
contenido básico de la ventana. Puede incorporar recursos en el archivo SWF de la aplicación o cargarlos desde
distintos archivos de aplicación. El contenido de Flash y HTML se puede crear sobre la marcha y añadirlo
dinámicamente a una ventana.
Cuando se carga contenido SWF o HTML que contiene JavaScript, se debe tener en cuenta el modelo de seguridad de
AIR. Cualquier contenido del entorno limitado de seguridad de la aplicación, es decir, el contenido instalado y cargado
con el esquema de URL app: de la aplicación, tiene privilegios completos para acceder a todas las API de AIR.
Cualquier contenido cargado desde fuera de este entorno limitado no podrá acceder a las API de AIR. El contenido de
JavaScript situado alojado fuera del entorno limitado de la aplicación no puede utilizar las propiedades
nativeWindow o htmlLoader del objeto Window de JavaScript.
Para que el uso de scripts sea seguro, puede utilizar el puente de entorno limitado para facilitar una interfaz limitada
entre el contenido de la aplicación y el que no lo es. En contenido HTML, también puede asignar imágenes de la
aplicación al entorno limitado ajeno a a la aplicación para que el código de dicha página pueda utilizar el contenido
externo de los scripts. Consulte “Seguridad en AIR” en la página 24.
runtime,
Carga de un archivo SWF o una imagen
Puede cargar archivos SWF de Flash o imágenes en la lista de visualización de una ventana nativa utilizando la clase
flash.display.Loader:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
public class LoadedSWF extends Sprite
{
public function LoadedSWF(){
var loader:Loader = new Loader();
loader.load(new URLRequest("visual.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadFlash);
}
private function loadFlash(event:Event):void{
addChild(event.target.loader);
}
}
}
Trabajo con ventanas nativas
Es posible cargar un archivo SWF que contenga código de biblioteca para utilizarlo en una aplicación basada en
HTML. El modo más sencillo de cargar un archivo SWF en una ventana HTML es utilizar la etiqueta
también puede utilizarse la API
Loader directamente.
script, pero
70
Nota: los archivos SWF antiguos creados con ActionScript 1 ó 2 comparten estados globales, como definiciones de clases,
objetos singleton y variables globales si están cargados en la misma ventana. Si este tipo de archivo SWF depende de
estados globales sin modificar para que funcione correctamente, no podrá cargarse más de una vez en la misma ventana,
ni cargarse otro archivo SWF en la misma ventana con las mismas definiciones de clases y variables. Este contenido se
puede cargar en ventanas separadas.
Carga de contenido HTML en una ventana NativeWindow
Para cargar contenido HTML en una ventana NativeWindow, puede añadir un objeto HTMLLoader al escenario de
la ventana y cargar el contenido HTML en HTMLLoader, o bien crear una ventana que ya contenga un objeto
HTMLLoader utilizando el método
HTMLLoader.createRootWindow(). El siguiente ejemplo muestra contenido
HTML en un área de visualización de 300 x 500 píxeles en el escenario de una ventana nativa:
//newWindow is a NativeWindow instance
var htmlView:HTMLLoader = new HTMLLoader();
html.width = 300;
html.height = 500;
//set the stage so display objects are added to the top-left and not scaled
newWindow.stage.align = "TL";
newWindow.stage.scaleMode = "noScale";
newWindow.stage.addChild( htmlView );
//urlString is the URL of the HTML page to load
htmlView.load( new URLRequest(urlString) );
Nota: el contenido SWF o PDF de un archivo HTML no se visualiza si la ventana utiliza transparencia (es decir, si la
propiedad
transparent de la ventana está establecida como true) o si se escala el control HTMLLoader.
Cómo añadir contenido SWF como superposición en una ventana HTML
Dado que las ventanas HTML están contenidas en una instancia de NativeWindow, es posible añadir objetos de
visualización de Flash delante y detrás de la capa HTML en la lista de visualización.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
Para añadir un objeto de visualización sobre la capa HTML, utilice el método addChild() de la propiedad
window.nativeWindow.stage. El método addChild() añade contenido en capas sobre cualquier contenido
existente en la ventana.
71
Para añadir un objeto de visualización debajo de la capa HTML, utilice el método
window.nativeWindow.stage, transfiriendo un valor de cero para el parámetro index. Si coloca un objeto en el
addChildAt() de la propiedad
índice cero, se mueve el contenido existente (incluida la visualización HTML) una capa más arriba y se inserta el nuevo
contenido en el capa inferior. Para que el contenido distribuido en capas debajo de la página HTML sea visible, debe
establecer la propiedad
paintsDefaultBackground del objeto HTMLlLoader como false. Además, todos los
elementos de la página que establezcan un color de fondo no serán transparentes. Si, por ejemplo, establece un color
de fondo para el elemento "body" de la página, ninguna parte de la página será transparente.
El siguiente ejemplo muestra cómo añadir objetos de visualización de Flash como superposiciones y como capas
inferiores en una página HTML. El ejemplo crea dos objetos de formas sencillas, y añade uno debajo de contenido
HTML y el otro encima. El ejemplo también actualiza la posición de la forma en función del evento
function Bouncer(radius, color){
this.radius = radius;
this.color = color;
//velocity
this.vX = -1.3;
this.vY = -1;
//Create a Shape object and draw a circle with its graphics property
this.shape = new air.Shape();
this.shape.graphics.lineStyle(1,0);
this.shape.graphics.beginFill(this.color,.9);
this.shape.graphics.drawCircle(0,0,this.radius);
this.shape.graphics.endFill();
//Set the starting position
this.shape.x = 100;
this.shape.y = 100;
//Moves the sprite by adding (vX,vY) to the current position
this.update = function(){
this.shape.x += this.vX;
this.shape.y += this.vY;
function init(){
//turn off the default HTML background
window.htmlLoader.paintsDefaultBackground = false;
var bottom = new Bouncer(60,0xff2233);
var top = new Bouncer(30,0x2441ff);
//listen for the enterFrame event
window.htmlLoader.addEventListener("enterFrame",function(evt){
bottom.update();
top.update();
});
//add the bouncing shapes to the window stage
window.nativeWindow.stage.addChildAt(bottom.shape,0);
window.nativeWindow.stage.addChild(top.shape);
}
</script>
<body onload="init();">
<h1>de Finibus Bonorum et Malorum</h1>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis
et quasi architecto beatae vitae dicta sunt explicabo.</p>
<p style="background-color:#FFFF00; color:#660000;">This paragraph has a background color.</p>
<p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis
praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias
excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui
officia deserunt mollitia animi, id est laborum et dolorum fuga.</p>
</body>
</html>
72
Este ejemplo proporciona una introducción rudimentaria a algunas técnicas avanzadas que utilizan tanto JavaScript
como ActionScript en AIR. Si no está familiarizado con el uso de objetos de visualización de ActionScript, consulte la
sección de programación de visualización del manual Programación con Adobe ActionScript 3.0 para obtener más
información.
Ejemplo: Creación de una ventana nativa
El siguiente ejemplo muestra cómo crear una ventana nativa:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
public function createNativeWindow():void {
//create the init options
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
options.transparent = false;
options.systemChrome = NativeWindowSystemChrome.STANDARD;
options.type = NativeWindowType.NORMAL;
//create the window
var newWindow:NativeWindow = new NativeWindow(options);
newWindow.title = "A title";
newWindow.width = 600;
newWindow.height = 400;
//activate and show the new window
newWindow.activate();
}
73
Trabajo con ventanas nativas
Gestión de ventanas
Puede utilizar las propiedades y métodos de la clase NativeWindow para gestionar el aspecto, el comportamiento y el
ciclo de vida de las ventanas de escritorio.
Obtención de una instancia de NativeWindow
Para poder manipular una ventana, primero es necesario obtener la instancia de la ventana. Puede obtener una
instancia de ventana de uno de los lugares siguientes:
• El constructor de ventanas nativas utilizado para crear la ventana:
var win:NativeWindow = new NativeWindow(initOptions);
• Propiedad nativeWindow del escenario de la ventana:
var win:NativeWindow = stage.nativeWindow;
• Propiedad stage de un objeto de visualización en la ventana:
var win:NativeWindow = displayObject.stage.nativeWindow;
• Propiedad target de un evento de ventana nativa distribuido por la ventana:
private function onNativeWindowEvent(event:NativeWindowBoundsEvent):void
{
var win:NativeWindow = event.target as NativeWindow;
}
• Propiedad nativeWindow de una página HTML mostrara en la ventana:
var win:NativeWindow = htmlLoader.window.nativeWindow;
• Propiedades activeWindow y openedWindows del objeto NativeApplication:
var nativeWin:NativeWindow = NativeApplication.nativeApplication.activeWindow;
var firstWindow:NativeWindow = NativeApplication.nativeApplication.openedWindows[0];
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
NativeApplication.nativeApplication.activeWindow hace referencia a la ventana activa de una aplicación
(pero devuelve
NativeApplication.nativeApplication.openedWindows contiene todas las ventanas de una aplicación de
null si la ventana activa no es una ventana de esta aplicación de AIR). El conjunto
Trabajo con ventanas nativas
AIR que no se han cerrado.
Activación, visualización y ocultación de ventanas
Para activar una ventana, llame al método activate() de NativeWindow. Al activar una ventana, ésta se visualiza en
primer plano, recibe la selección del teclado y del ratón y, si es necesario, se hace visible restaurando la ventana o
estableciendo la propiedad
ventanas de la aplicación. Si se llama al método
visible como true. Cuando se activa una ventana, ésta no cambia el orden del resto de
activate(), la ventana distribuye un evento activate.
74
Para mostrar una ventana oculta sin activarla, establezca la propiedad
visible como true. Esto llevará la ventana al
primer plano, pero no recibirá la selección.
Para ocultar la visibilidad de una ventana, establezca su propiedad
visible como false. Al ocultar una ventana, se
suprime la visualización de la ventana, de los iconos relacionados de la barra de tareas y, en Mac OS X, la entrada del
menú Ventana.
Nota: en Mac OS X, no es posible ocultar por completo una ventana minimizada que tenga un icono en la parte de venta
del dock. Si la propiedad
visible se establece como false en una ventana minimizada, el icono del Dock de dicha
ventana sigue visualizándose. Si el usuario hace clic en el icono, la ventana se restaura con su estado visible y aparece en
la pantalla.
Cambio del orden de visualización de las ventanas
AIR proporciona varios métodos para poder cambiar directamente el orden de visualización de las ventanas. Puede
colocar una ventana delante del orden de visualización o detrás, mover una ventana encima de otra o detrás. Al mismo
tiempo, el usuario puede reordenar las ventanas activándolas.
Puede mantener una ventana delante del resto si establece su propiedad
una ventana con este ajuste, el orden de visualización de las ventanas se ajustará entre sí, pero siempre se visualizarán
delante de ventanas que tengan la propiedad
alwaysInFront como false. Las ventanas del grupo superior también se
visualizan sobre el resto de las aplicaciones, incluso si la aplicación de AIR no está activa. Como este comportamiento
no es el habitual del resto de usuarios, sólo se debe establecer
alwaysInFront como true cuando sea realmente
necesario. Entre los ejemplos de usos justificados se incluyen:
• Ventanas emergentes temporales para controles como sugerencias, listas, menús personalizados o cuadros
combinados. Como estas ventanas se cierran cuando dejan de recibir la selección, está justificado el
comportamiento para evitar que el usuario no pueda ver las ventanas.
• Mensajes de error y alertas realmente importantes. Si se produce un cambio irrevocable y el usuario no responde a
tiempo, está justificado el comportamiento para poner la alerta en primer plano. Sin embargo, la mayoría de los
errores y alertas se pueden gestionar con el orden de visualización normal de las ventanas.
• Ventanas temporales superpuestas.
Nota: AIR no obliga a utilizar la propiedad
alwaysInFront correctamente. Si embargo, si su aplicación no se ajusta al
flujo normal del resto de usuarios, es muy probable que termine en la papelera de reciclaje.
alwaysInFront como true. Si hay más de
La clase NativeWindow proporciona las siguientes propiedades y métodos para establecer el orden de visualización de
una ventana con respecto a otras:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
MiembroDescripción
Propiedad alwaysInFrontEspecifica si la ventana se muestra en el grupo superior de ventanas.
En casi todos los casos, el mejor ajuste es false. Si cambia el valor de false a true, la ventana se coloca
delante del resto (aunque no se activa). Si cambia el valor de
del resto de ventanas del grupo superior, aunque delante del resto de ventanas. Si no cambia la propiedad
de la ventana, tampoco cambia su orden de visualización.
orderToFront()Trae la ventana al frente.
orderInFrontOf()Coloca la ventana directamente delante de una ventana concreta.
orderToBack()Envía la ventana detrás del resto de ventanas.
orderBehind()Envía la ventana directamente detrás de una ventana concreta.
activate()Coloca la ventana en primer plano, la hace visible y le asigna la selección.
true a false, la ventana se coloca detrás
Trabajo con ventanas nativas
Nota: si una ventana está oculta (visible es false) o minimizada, llamar a los métodos de orden de visualización no
produce ningún efecto.
En el sistema operativo Linux, los diferentes administradores de ventana aplican reglas distintas relacionadas con el
orden de visualización de la ventana:
• En algunos administradores, las ventanas de utilidades siempre se muestran delante de las ventanas normales.
• En algunos administradores de ventanas, una ventana de pantalla completa con alwaysInFront establecido en true,
siempre se muestra delante de otras ventanas que también tienen el valor
alwaysInFront definido como true.
75
Cómo cerrar una ventana
Para cerrar una ventana, utilice el método NativeWindow.close().
Al cerrar la ventana, se descarga su contenido, pero si otros objetos tienen referencias a él, éste no se elimina. El método
NativeWindow.close() se ejecuta de forma asíncrona y la aplicación contenida en la ventana se sigue ejecutando
durante el proceso de cierre. El método close distribuye un evento close una vez finalizada la operación de cierre. El
objeto NativeWindow sigue siendo técnicamente válido, aunque al intentar acceder a la mayoría de propiedades y
métodos de una ventana cerrada, se genera un error IllegalOperationError. No es posible volver a abrir una ventana
cerrada. Verifique la propiedad
visibilidad de una ventana, establezca la propiedad
Si la propiedad
Nativeapplication.autoExit es true (valor predeterminado), la aplicación se cerrará al cerrarse la
closed de una ventana para ver si se ha cerrado o no. Simplemente para ocultar la
NativeWindow.visible como false.
última ventana.
Permiso para cancelar operaciones con ventanas
Si una ventana utiliza fondo cromático del sistema, es posible cancelar la interacción con el usuario que esté detectando
cancelar el comportamiento predeterminado de los eventos adecuados. Por ejemplo, cuando un usuario hace clic en
el botón para cerrar el fondo cromático del sistema, se distribuye el evento
al método
preventDefault() del evento, la ventana no se cierra.
Si una ventana no utiliza fondo cromático, los eventos de notificación de cambios intencionados no se distribuyen
automáticamente antes del cambio. Por ello, si llama a métodos para cerrar una ventana, para cambiar su estado o para
definir las propiedades de su contorno, el cambio no se puede cancelar. Para avisar a los componentes de la aplicación
antes de que se realice un cambio de ventana, la lógica de la aplicación puede distribuir el evento de notificación
correspondiente mediante el método
dispatchEvent() de la ventana.
closing. Si algún detector registrado llama
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
Por ejemplo, la siguiente lógica implementa un controlador de eventos cancelable para un botón de cierre de una
ventana:
public function onCloseCommand(event:MouseEvent):void{
var closingEvent:Event = new Event(Event.CLOSING,true,true);
dispatchEvent(closing);
if(!closingEvent.isDefaultPrevented()){
win.close();
}
}
El método dispatchEvent() devuelve false si un detector llama al método preventDefault() del evento. No
obstante, también puede devolver
isDefaultPrevented() para probar si se debe cancelar o no el cambio.
false por otros motivos. Por ello, es mejor utilizar explícitamente el método
Maximización, minimización y restauración de una ventana
Para maximizar la ventana, utilice el método maximize() de NativeWindow.
myWindow.maximize();
Para minimizar la ventana, utilice el método minimize() de NativeWindow.
myWindow.minimize();
76
Para restaurar la ventana (es decir, hacer que recupere el tamaño que tenía antes de maximizarla o minimizarla), utilice
el método
myWindow.restore();
restore() de NativeWindow.
Nota: el comportamiento resultante de maximizar una ventana de AIR es distinto al comportamiento estándar de Mac
OS X. En vez de alternar entre el tamaño “estándar” definido por la aplicación y el último tamaño establecido por el
usuario, las ventanas de AIR alternan entre el último tamaño establecido por la aplicación y el tamaño completo
utilizable de la pantalla.
En el sistema operativo Linux, los diferentes administradores de ventana aplican reglas distintas relacionadas con la
configuración del estado de visualización de la ventana:
• En algunos administradores, las ventanas de utilidades no se puede maximizar.
• Si se define un tamaño máximo para la ventana, algunas ventanas no permiten que se maximice una ventana. Otros
administradores de ventanas establecen el estado de visualización como maximizado, pero no cambian el tamaño
de la ventana. En cualquier caso, no se distribuye ningún evento de cambio de estado de visualización.
• Algunos administradores de ventanas no aceptan la configuración maximizable o minimizable de la ventana.
Ejemplo: Minimizar, maximizar, restaurar y cerrar una ventana
El siguiente ejemplo de ActionScript para Flash crea cuatro campos de texto en los que se puede hacer clic y que activan
los métodos
minimize(), maximize(), restore() y close() de NativeWindow:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
closeTextBtn.addEventListener(MouseEvent.CLICK, onCloseWindow);
}
function onMinimize(event:MouseEvent):void
{
this.stage.nativeWindow.minimize();
}
function onMaximize(event:MouseEvent):void
{
this.stage.nativeWindow.maximize();
}
function onRestore(event:MouseEvent):void
{
this.stage.nativeWindow.restore();
}
function onCloseWindow(event:MouseEvent):void
{
this.stage.nativeWindow.close();
}
}
}
Cambio de tamaño y desplazamiento de una ventana
Si una ventana utiliza fondo cromático del sistema, éste proporciona controles de arrastre para cambiar el tamaño de
la ventana y moverla por el escritorio. Si una ventana no utiliza fondo cromático del sistema, deberá añadir sus propios
controles para que el usuario pueda cambiarla de tamaño o desplazarla.
78
Nota: para cambiar el tamaño de una ventana, primero debe obtener una referencia a la instancia de NativeWindow.
Para obtener más información sobre cómo obtener una referencia a la ventana, consulte “Obtención de una instancia de
NativeWindow” en la página 73.
Cambio de tamaño de una ventana
Para que un usuario pueda cambiar el tamaño de una ventana de forma interactiva, utilice el método
de NativeWindow. Si se llama a este método desde un evento
cargo del ratón y finaliza cuando el sistema operativo recibe un evento
mouseDown, la operación de cambio de tamaño corre a
mouseUp. Cuando se llama a startResize(),
startResize()
se transfiere un argumento que especifica el borde y la esquina desde los que se puede cambiar el tamaño de la ventana.
Para establecer el tamaño de la ventana mediante programación, defina las propiedades de la ventana
bounds con las dimensiones deseadas. Si se establecen los límites, la posición y el tamaño de la ventana se pueden
o
width, height
modificar al mismo tiempo. Sin embargo, no se puede garantizar el orden en que suceden los cambios. Algunos
administradores de ventanas de Linux no permiten que las ventanas se amplíen fuera de los límites de la pantalla del
escritorio. En estos casos, el tamaño final de la ventana puede estar limitado debido al orden en que se establecen las
propiedades, aunque con el resultado goblal de los cambios se podría haber obtenido una ventana válida. Por ejemplo,
si se modifica la altura y la posición y de una ventana junto a la parte inferior de la pantalla, puede que no se produzca
el cambio completo de altura cuando se aplique el cambio de altura antes del cambio de posición y.
Nota: en Linux, las propiedades de la ventana se modifican de forma asincrónica. Si se establece una propiedad en una
línea del programa y se lee el valor en la siguiente, el valor leído aún reflejará la configuración anterior. Puede utilizar
los eventos generados por la ventana para detectar el momento en que se aplica el cambio.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
El modo de escala del escenario determina cómo se comporta el escenario de la ventana y su contenido cuando se
cambia la ventana de tamaño. No olvide que los modos de escala del escenario están diseñados para situaciones (como
un navegador Web) en las que la aplicación no controla el tamaño ni la relación de aspecto de la visualización. En
general, los mejores resultados se obtienen estableciendo la propiedad
Si quiere escalar también el contenido de la ventana, debe establecer los parámetros
scaleMode como StageScaleMode.NO_SCALE.
scaleX y scaleY del contenido
como respuesta a los cambios de los límites de la ventana.
Desplazamiento de una ventana
Para desplazar una ventana sin cambiar su tamaño, utilice el método
el método
startResize(), cuando se llama a startMove() desde un evento mouseDown, el proceso de
desplazamiento corre a cargo del ratón y finaliza cuando el sistema operativo recibe un evento
startMove() de NativeWindow. Al igual que
mouseUp.
79
Para obtener más información sobre los métodos
startResize y startMove, consulte el manual Referencia del
lenguaje y componentes ActionScript 3.0 (http://www.adobe.com/go/learn_air_aslr_es).
Ejemplo: Cambio de tamaño y desplazamiento de ventanas
El siguiente ejemplo muestra como iniciar el campo de tamaño y las operaciones de desplazamiento de una ventana:
public class NativeWindowResizeExample extends Sprite
{
public function NativeWindowResizeExample():void
{
// Fills a background area.
this.graphics.beginFill(0xFFFFFF);
this.graphics.drawRect(0, 0, 400, 300);
this.graphics.endFill();
// Creates a square area where a mouse down will start the resize.
var resizeHandle:Sprite =
createSprite(0xCCCCCC, 20, this.width - 20, this.height - 20);
resizeHandle.addEventListener(MouseEvent.MOUSE_DOWN, onStartResize);
// Creates a square area where a mouse down will start the move.
var moveHandle:Sprite = createSprite(0xCCCCCC, 20, this.width - 20, 0);
moveHandle.addEventListener(MouseEvent.MOUSE_DOWN, onStartMove);
}
public function createSprite(color:int, size:int, x:int, y:int):Sprite
{
var s:Sprite = new Sprite();
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
public function onStartResize(event:MouseEvent):void
{
this.stage.nativeWindow.startResize(NativeWindowResize.BOTTOM_RIGHT);
}
public function onStartMove(event:MouseEvent):void
{
this.stage.nativeWindow.startMove();
}
}
}
80
Detección de eventos de ventanas
Para detectar los eventos distribuidos por una ventana, debe registrar un detector en la instancia de la ventana. Por
ejemplo, para detectar un evento closing, debe registrar un detector con la ventana del modo siguiente.
Cuando se distribuye un evento, la propiedad target hace referencia a la ventana que envía el evento.
La mayoría de eventos de ventanas tienen dos mensajes relacionados. El primer mensaje indica que el cambio en la
ventana es inminente (se puede cancelar), mientras que el segundo mensaje indica que el cambio ya se ha producido.
Por ejemplo, si el usuario hace clic en el botón de cierre de una ventana, de distribuye el mensaje del evento closing. Si
ningún detector cancela el evento, la ventana se cierre y el evento close se distribuye a todos los detectores.
Normalmente, los eventos de advertencia como
para activar un evento. Si se llama al método
el evento
mediante el método
closing (sólo el evento close). Sin embargo, es posible construir un objeto de evento de cierre y distribuirlo
dispatchEvent() de ventana.
Los eventos de ventana que distribuye un objeto Event son:
EventoDescripción
activateSe distribuye cuando la ventana recibe la selección.
deactivateSe distribuye cuando la ventana deja de recibir la selección.
closingSe distribuye cuando la ventana va a cerrarse. Esto sólo ocurre automáticamente al pulsar el botón de cierre del
fondo cromático o, en Mac OS X, al invocar el comando Salir.
closing sólo se distribuyen si se utiliza el fondo cromático del sistema
close() de la ventana, por ejemplo, no se distribuye automáticamente
closeSe distribuye cuando la ventana se ha cerrado.
Los eventos de ventana que distribuye un objeto NativeWindowBoundsEvent son:
EventoDescripción
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con ventanas nativas
81
movingSi se distribuye inmediatamente antes de que la esquina superior izquierda de la ventana cambie de posición,
moveSe distribuye una vez que la esquina superior izquierda de la ventana ha cambiado de posición.
resizingSe distribuye inmediatamente antes de que la anchura o la altura de la ventana cambie, bien como resultado
resizeSe distribuye después de que la ventana haya cambiado de tamaño.
bien como resultado del desplazamiento, cambio de tamaño o modificación del estado de visualización de la
ventana.
del cambio de tamaño o por la modificación del estado de visualización.
En eventos NativeWindowBoundsEvent, puede utilizar las propiedades beforeBounds y afterBounds para
determinar los límites de la ventana antes y después el cambio.
Los eventos de ventana que distribuye un objeto NativeWindowDisplayStateEvent son:
EventoDescripción
displayStateChangingSe distribuye inmediatamente antes de que cambie el estado de visualización de la ventana.
displayStateChangeSe distribuye una vez ha cambiado el estado de visualización de la ventana.
En eventos NativeWindowDisplayStateEvent, puede utilizar las propiedades beforeDisplayState y
afterDisplayState para determinar el estado de visualización de la ventana antes y después del cambio.
En algunos administradores de ventanas de Linux, no se distribuye ningún evento de cambio de estado de
visualización cuando se maximiza una ventana con una configuración de tamaño máximo. (La ventana se establece en
el estado de visualización maximizado, pero no se cambia el tamaño.)
Visualización de ventanas a pantalla completa
Al establecer la propiedad displayState de la clase Stage como StageDisplayState.FULL_SCREEN_INTERACTIVE
la ventana pasa a modo de pantalla completa. La acción del teclado sí esta permitida en este modo. (En contenido SWF
ejecutado en un navegador, no está permitida la acción del teclado). Para salir del modo de pantalla completa, el
usuario debe pulsar la tecla Esc.
Nota: algunos administradores de ventanas de Linux no cambiarán las dimensiones de la ventana para que se rellene la
pantalla si se establece un tamaño máximo para la ventana (aunque se elimina el fondo cromático del sistema de la
ventana).
El siguiente ejemplo de ActionScript para Flash simula un terminal simple de texto a pantalla completa:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
public class FullScreenTerminalExample extends Sprite
{
public function FullScreenTerminalExample():void
{
var terminal:TextField = new TextField();
terminal.multiline = true;
terminal.wordWrap = true;
terminal.selectable = true;
terminal.background = true;
terminal.backgroundColor = 0x00333333;
Para ver información sobre las pantallas del escritorio que estén conectadas a un ordenador, utilice la clase Screen de
Adobe® AIR®.
Información suplementaria en línea sobre las pantallas
Encontrará más información sobre la clase Screen y cómo trabajar con las pantallas en las fuentes siguientes:
Guías de inicio rápido (Centro de desarrollo de Adobe AIR)
• Medición del escritorio virtual (en inglés)
Referencia del lenguaje
• Screen
83
Artículos y muestras del Centro de desarrollo de Adobe
• Centro de desarrollo de Adobe AIR para Flash (en inglés); busque "AIR screens".
Aspectos básicos de las pantallas
La API de la pantalla contiene una sola clase, Screen, que proporciona miembros estáticos para obtener información
sobre las pantallas del sistema y miembros de instancia para describir una pantalla en particular.
Un sistema informático puede tener conectados varios monitores que se corresponden con diversas pantallas de
escritorio dispuestas en un espacio virtual. La clase Screen de AIR facilita información sobre las pantallas, la
disposición y el espacio aprovechable de las mismas. Si hay más de un monitor que se corresponde con la misma
pantalla, es que existe una sola pantalla. Si el tamaño de la pantalla es superior a la superficie de visualización del
monitor, no hay manera de determinar qué parte de la pantalla está visible en este momento.
Una pantalla representa una superficie independiente de visualización del escritorio. Las pantallas se describen como
rectángulos dentro del escritorio virtual. El punto cero del sistema de coordenadas del escritorio virtual es el ángulo
superior izquierdo de la pantalla designada como pantalla principal. Todos los valores que se utilizan para describir
una pantalla se expresan en píxeles.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Pantallas
En esta disposición de pantallas, hay dos pantallas en el escritorio virtual. Las coordenadas del ángulo superior izquierdo de la pantalla principal
(nº 1) son siempre (0,0). Si se modifica la disposición de pantallas para designar la pantalla nº 2 como pantalla principal, las coordenadas de la
pantalla nº 1 pasan a ser cifras negativas. Las barras de menús, las barras de tareas y los docks se excluyen al notificar los límites utilizables para
una pantalla.
84
Para obtener más información sobre la clase, los métodos, las propiedades y los eventos de la API de la pantalla,
consulte Referencia del lenguaje y componentes ActionScript 3. (http://www.adobe.com/go/learn_air_aslr_es).
Enumeración de las pantallas
Las pantallas del escritorio virtual se pueden enumerar utilizando los siguientes métodos y propiedades de pantalla:
Método o propiedadDescripción
Screen.screensProporciona un conjunto de objetos Screen que describen las pantallas disponibles. Obsérvese que el
Screen.mainScreenProporciona un objeto Screen para la pantalla principal. En Mac OS X la pantalla principal es la que
Screen.getScreensForRectangle() Proporciona un conjunto de objetos Screen que describen las pantallas a las que cruza el rectángulo
Los valores que producen los métodos y propiedades de la clase Screen no deben guardarse. El usuario o el sistema
operativo puede modificar en cualquier momento las pantallas disponibles y la disposición de las mismas.
En el ejemplo siguiente se utiliza la API de la pantalla para desplazar una ventana entre varias pantallas en función de
la pulsación de las teclas de flecha. Para desplazar la ventana a la siguiente pantalla, el ejemplo obtiene el conjunto
screens y lo ordena en sentido vertical u horizontal (dependiendo de la tecla de flecha que se pulse). El código pasa
por el conjunto ordenado y compara cada pantalla con las coordenadas de la pantalla actual. Para identificar la pantalla
actual de la ventana, el ejemplo llama a
orden del conjunto no tiene importancia.
contiene la barra de menús. En Windows la pantalla principal es la designada como tal por el sistema.
determinado. El rectángulo que se pasa a este método tiene las coordenadas en píxeles en el escritorio
virtual. Si el rectángulo no forma intersección con ninguna pantalla, el conjunto estará vacío. Este
método puede emplearse para averiguar en qué pantallas se muestra una ventana.
Screen.getScreensForRectangle() y se pasan los límites de la ventana.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
public class ScreenExample extends Sprite
{
public function ScreenExample()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
private function sortHorizontal(a:Screen,b:Screen):int{
if (a.bounds.left > b.bounds.left){
return 1;
} else if (a.bounds.left < b.bounds.left){
return -1;
} else {return 0;}
}
private function sortVertical(a:Screen,b:Screen):int{
if (a.bounds.top > b.bounds.top){
return 1;
} else if (a.bounds.top < b.bounds.top){
return -1;
} else {return 0;}
}
private function getCurrentScreen():Screen{
var current:Screen;
var screens:Array = Screen.getScreensForRectangle(stage.nativeWindow.bounds);
(screens.length > 0) ? current = screens[0] : current = Screen.mainScreen;
return current;
}
}
}
86
Capítulo 12: Trabajo con menús nativos
Se deben utilizar las clases en la API del menú nativo para definir los menús de aplicación, ventana, contextuales y
emergentes.
Información adicional en línea de menús nativos
Se puede encontrar más información sobre la API de menú nativo y la utilización de menús nativos de los siguientes
recursos:
Guías de inicio rápido (Centro de desarrollo de Adobe AIR)
• Adición de menús nativos a una aplicación de AIR (en inglés)
Referencia del lenguaje
• NativeMenu
• NativeMenuItem
87
Artículos y muestras del Centro de desarrollo de Adobe
• Centro de desarrollo de Adobe AIR para Flex (en inglés); busque "AIR menus".
Aspectos básicos del menú AIR
Las clases de menú nativo permiten acceder a las funciones del menú nativo del sistema operativo donde se ejecuta la
aplicación. Se pueden utilizar los objetos NativeMenu para menús de aplicación (disponibles en Mac OS X), menús de
ventana (disponibles en Windows y Linux), menús contextuales y menús emergentes.
Clases del menú AIR
Las clases de Menú AIR™ de Adobe® incluyen:
PaqueteClases
flash.display
flash.ui
flash.events
• NativeMenu
• NativeMenuItem
• ContextMenu
• ContextMenuItem
• Evento
• ContextMenuEvent
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con menús nativos
Variedades de menú
AIR admite los siguientes tipos de menús:
Menús de aplicación Un menú de aplicación es un menú global que se aplica a toda la aplicación. Los menús de
aplicación son compatibles en Mac OS X, pero no en Windows o Linux. En Mac OS X, el sistema operativo
automáticamente crea un menú de aplicación. Se puede utilizar la API del menú AIR para añadir elementos y
submenús secundarios a los menús estándar. Se pueden añadir detectores para gestionar los comandos de menú
existentes. O bien se pueden quitar elementos existentes.
Menús de ventana Un menú de ventana está asociado con una sola ventana y se muestra debajo de la barra de título.
Se pueden añadir los menús a una ventana creando un objeto NativeMenu y asignándolo a la propiedad
objeto NativeWindow. Los menús de ventana son compatibles con los sistemas operativos Windows y Linux, pero no
en Mac OS X. Los menús de ventana nativos solo se pueden utilizar con ventanas que tienen fondo cromático del
sistema.
Menús contextuales Los menús contextuales se abren en respuesta a un clic con el botón derecho del ratón o a un clic
de un comando en un objeto interactivo en el contenido SWF o en un elemento de documento en un contenido
HTML. Puede crear un menú contextual utilizando la clase NativeMenu o ContextMenu. En el contenido HTML, se
puede utilizar el Webkit HTML y las API JavaScript para añadir menús contextuales a elementos HTML.
Menús del icono de acoplamiento y bandeja del sistema Estos menús de iconos son similares a los menús
contextuales y se asignan a un icono de aplicación en el acoplamiento de Mac OS X o las áreas de notificación en la
barra de tareas de Windows y Linux. Los menús del icono de acoplamiento y bandeja del sistema utilizan la clase
NativeMenu. En Mac OS X, los elementos en el menú se añaden por encima de los elementos del sistema operativo
estándar. En Windows o Linux, no hay un menú estándar.
menu del
88
Menús emergentes Un menú emergente de AIR es como un menú contextual, pero no necesariamente está asociado
con un determinado objeto o elemento de aplicación. Los menús emergentes se pueden mostrar en cualquier parte de
una ventana llamando al método
Menús personalizados El sistema operativo invoca los menús nativos y, como tal, existen fuera de los modelos de
display() de cualquier objeto NativeMenu.
representación de Flash y HTML. Se pueden crear los propios menús no nativos utilizando MXML, ActionScript o
JavaScript. Las clases de menú AIR no proporcionan ninguna capacidad para controlar la invocación de menús
nativos.
Menús predeterminados
El sistema operativo o una clase incorporada de AIR proporciona los siguientes menús predeterminados:
• Menú de aplicación en Mac OS X
• Menú de icono de acoplamiento en Mac OS X
• Menú contextual para texto e imágenes seleccionados en un contenido HTML
• Menú contextual para texto seleccionado en un objeto TextField (o en un objeto que amplía TextField)
Estructura de los menús
Los menús, por naturaleza, se crean en jerarquías. Los objetos NativeMenu contienen objetos secundarios
NativeMenuItem. Los objetos NativeMenuItem que, a su vez, representan los submenús pueden tener objetos
NativeMenu. El objeto de menú principal o raíz en la estructura representa la barra de menús para los menús de
aplicación y de ventana. (Los menús contextuales, de icono y los menús emergentes no cuentan con una barra de
menús).
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con menús nativos
El siguiente diagrama muestra la estructura de un menú típico. El menú raíz representa la barra de menús y contiene
dos elementos de menú que hacen referencia a un submenú Archivo y a un submenú Editar. El submenú Archivo en
esta estructura contiene dos elementos de comando y un elemento que hace referencia a un submenú Menú Abrir reciente, que contiene tres elementos. El submenú Editar contiene tres comandos y un separador.
89
La definición de un submenú requiere un objeto NativeMenu y NativeMenuItem. El objeto NativeMenuItem define
la etiqueta que se muestra en el menú principal y permite al usuario abrir el submenú. El objeto NativeMenu actúa
como un contenedor para los elementos en el submenú. El objeto NativeMenuItem hace referencia al objeto
NativeMenu a través de la propiedad
submenu de NativeMenuItem.
Para ver un ejemplo de código que crea este menú, consulte “Ejemplo: Menú de ventana y de aplicación” en la
página 99.
Eventos de menú
Los objetos NativeMenu y NativeMenuItem ambos distribuyen eventos displayingy select:
Displaying: Inmediatamente antes de visualizar un menú, el menú y los elementos de menú distribuyen un evento
displaying a cualquier detector registrado. El evento displaying proporciona la oportunidad de actualizar los
contenidos de menú o la apariencia de elementos antes de que se muestre al usuario. Por ejemplo, en el detector para
el evento
actual de documentos recientemente visualizados.
La propiedad
donde el detector está registrado: ya sea el mismo menú o uno de sus elementos.
displaying de un menú “Abrir reciente”, se pueden cambiar los elementos de menú para reflejar la lista
target del objeto de evento es siempre el menú que se está por mostrar. currentTarget es el objeto
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con menús nativos
Nota: también se distribuye el evento displaying cuando se accede al estado del menú o a uno de sus elementos.
Select: Cuando el usuario elige un elemento de comando, el elemento distribuye un evento select a cualquier
detector registrado. Los elementos de submenú y separador no se pueden seleccionar y por ende nunca distribuyen un
select.
evento
90
Un evento
detectar eventos
select se propaga desde un elemento de menú al menú que lo contienen hasta el menú raíz. Se pueden
selectdirectamente en un elemento y en niveles superiores en la estructura del menú. Cuando se
detecta el evento select en un menú, se puede identificar el elemento seleccionado utilizando la propiedad de evento
target. A medida que el evento se propaga a través de la jerarquía, la propiedad currentTarget del objeto de evento
identifica el objeto de menú actual.
Nota: los objetos ContextMenu y ContextMenuItem distribuyen eventos
select y displaying.
eventos
menuItemSelect y menuSelect así como
Equivalentes de teclas para comandos de menú
Se puede asignar un equivalente de tecla (a veces llamado acelerador) a un comando de menú. El elemento de menú
distribuye un evento
menú que contiene el elemento debe ser parte del menú de aplicación o de la ventana activa para que se invoque el
comando.
Los equivalentes de teclas tienen dos partes, una cadena que representa la tecla principal y un conjunto de teclas
modificadoras que también se deben presionar. Para asignar la tecla principal, establezca la propiedad
del elemento de menú a la cadena de un solo carácter para dicha tecla. Se utiliza una letra mayúscula, la tecla Mayús se
añade automáticamente al conjunto modificador.
En Mac OS X, el modificador predeterminado es la tecla de comando (
la tecla de control (
modificador. Para asignar diferentes teclas modificadoras, asigne un nuevo conjunto que contenga los códigos de tecla
deseados a la propiedad
modificadores predeterminados o si asigna su propio conjunto modificador, se añade la tecla Mayús si la cadena que
asigna a la propiedad
las teclas modificadoras se definen en la clase Keyboard.
select a cualquier detector registrado cuando se presiona la tecla o combinación de teclas. El
keyEquivalent
Keyboard.COMMAND). En Windows y Linux, es
Keyboard.CONTROL). Estas teclas predeterminadas se añaden automáticamente al conjunto
keyEquivalentModifiers. El conjunto predeterminado se sobrescribe. Si utiliza los
keyEquivalent es una letra mayúscula. Las constantes de los códigos de tecla para utilizar en
La cadena equivalente de la tecla asignada se muestra automáticamente junto al nombre del elemento de menú. El
formato depende del sistema operativo del usuario y las preferencias del sistema.
Nota: si asigna el valor
Keyboard.COMMAND a un conjunto de modificadores de teclas en el sistema operativo Windows,
no se muestra ningún equivalente de tecla en el menú. Sin embargo, se debe utilizar la tecla de control para activar el
comando de menú.
En el siguiente ejemplo se asigna
var item:NativeMenuItem = new NativeMenuItem("Ungroup");
item.keyEquivalent = "G";
Ctrl+Mayús+G como el equivalente de tecla para un elemento de menú:
En este ejemplo se asigna Ctrl+Mayús+G como el equivalente de tecla configurando directamente el conjunto
modificador:
var item:NativeMenuItem = new NativeMenuItem("Ungroup");
item.keyEquivalent = "G";
item.keyEquivalentModifiers = [Keyboard.CONTROL];
Nota: los equivalentes de teclas solo se activan para menús de ventana y de aplicación. Si se añade un equivalente de tecla
a un menú contextual o emergente, el mismo se muestra en la etiqueta de menú, pero el comando de menú asociado
nunca se invoca.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con menús nativos
Letras de selección
Las letras de selección son parte de la interfaz del teclado del sistema operativo a los menús. Linux, Mac OS X y
Windows permiten a los usuarios abrir menús y seleccionar comandos con el teclado, pero hay pequeñas diferencias.
En Mac OS X, el usuario escribe las primeras letras del menú o comando y presiona la tecla de retorno. La propiedad
mnemonicIndex se omite.
En Windows, solo una letra es significativa. Como valor predeterminado, la letra significativa es el primer carácter de
la etiqueta, pero si se asigna una letra de selección al elemento de menú, entonces el carácter significativo se convierte
en la letra designada. Si dos elementos en un menú tienen el mismo carácter significativo (independientemente si se
ha asignado una letra de selección) entonces la interacción del teclado con el menú cambia ligeramente. En lugar de
presionar una sola letra para seleccionar el menú o comando, el usuario debe presionar la letra tantas veces como sea
necesario para resaltar el elemento deseado y luego presionar la tecla Intro para completar la selección. Para mantener
un comportamiento coherente, debe asignar una letra de selección exclusiva para cada elemento en un menú para los
menús de ventana.
En Linux, no se proporciona ninguna letra de selección predeterminada. Es necesario especificar un valor para la
propiedad
Se debe especificar la letra de selección como un índice en la cadena de la etiqueta. El índice del primer carácter en una
etiqueta es 0. Por consiguiente, para utilizar “r” como la letra de selección para un elemento de menú denominado
“Formato,” se debe establecer la propiedad
mnemonicIndex de un elemento de menú para proporcionar una letra de selección.
mnemonicIndex igual a 2.
91
var item:NativeMenuItem = new NativeMenuItem("Format");
item.mnemonicIndex = 2;
Estado de los elementos de menú
Los elementos de menú tienen dos propiedades de estado, checked y enabled:
checked Se debe establecer en true para mostrar una marca de verificación junto a la etiqueta del elemento.
var item:NativeMenuItem = new NativeMenuItem("Format");
item.checked = true;
enabled Seleccione el valor true o false para controlar si el comando está activado o no. Los elementos desactivados
aparecen “sombreados” y no distribuyen eventos
var item:NativeMenuItem = new NativeMenuItem("Format");
item.enabled = false;
select.
Asociación de un objeto a un elemento de menú
La propiedad data de la clase NativeMenuItem permite hacer referencia a un objeto arbitrario en cada elemento. Por
ejemplo, en un menú “Abrir reciente”, puede asignar el objeto File para cada documento a cada elemento de menú.
var file:File = File.applicationStorageDirectory.resolvePath("GreatGatsby.pdf")
var menuItem:NativeMenuItem = docMenu.addItem(new NativeMenuItem(file.name));
menuItem.data = file;
Creación de menús nativos
Este tema describe la manera de crear los diferentes tipos de menús nativos admitidos en AIR.
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
Trabajo con menús nativos
Creación de un objeto de menú raíz
Para crear un objeto NativeMenu para que actúe como la raíz del menú, se debe utilizar el constructor NativeMenu:
var root:NativeMenu = new NativeMenu();
Para los menús de aplicación y de ventana, el menú raíz representa la barra de menús y solo debe tener los elementos
que abren submenús. Los menús contextual y emergentes no tienen una barra de menús, por lo que el menú raíz puede
tener líneas separadoras y comandos así como submenús.
Después de crear el menú, se pueden añadir elementos de menú. Los elementos aparecen en el menú en el orden en
que se añaden, a menos que se añadan los elementos en un índice específico utilizando el método
objeto de menú.
Se puede asignar el menú como un menú de aplicación, de ventana, de icono o contextual o mostrarlo como un menú
emergente como se muestra en las siguientes secciones:
Definición del menú de aplicación
NativeApplication.nativeApplication.menu = root;
Nota: Mac OS X define un menú que contiene elementos estándares para cada aplicación. Si se asigna un nuevo objeto
NativeMenu a la propiedad
menu del objeto NativeApplication se remplaza el menú estándar. También se puede utilizar
el menú estándar en lugar de sustituirlo.
addItemAt() de un
92
Definición de un menú de ventana
nativeWindowObject.menu = root;
Definición de un menú contextual en un objeto interactivo
Nota: Mac OS X define un menú estándar para el icono de acoplamiento de la aplicación. Cuando se asigna un nuevo
NativeMenu a la propiedad de menú del objeto DockIcon, los elementos en ese menú se muestran arriba de los elementos
estándar. No se pueden quitar, acceder ni modificar los elementos de menú estándar.
Definición de un menú de icono de bandeja del sistema
Para crear un submenú, se añade un objeto NativeMenuItem al menú principal y luego se asigna el objeto NativeMenu
definiendo el submenú a la propiedad
submenú y los objetos de menú asociados:
submenu del elemento. AIR proporciona dos modos de crear elementos de
Se puede crear un elemento de menú y el objeto de menú relacionado en un paso con el método
var editMenuItem:NativeMenuItem = root.addSubmenu(new NativeMenu(), "Edit");
addSubmenu():
También se puede crear el elemento de menú y asignar el objeto de menú a la propiedad submenu de forma separada:
DESARROLLO DE APLICACIONES DE ADOBE AIR 1.5 CON FLASH CS4 PROFESSIONAL
var editMenuItem:NativeMenuItem = root.addItem("Edit", false);
editMenuItem.submenu = new NativeMenu();
Trabajo con menús nativos
Creación de un comando de menú
Para crear un comando de menú, añada un objeto NativeMenuItem a un menú y añada un detector de evento que hace
referencia a la función que implementa el comando de menú:
var copy:NativeMenuItem = new NativeMenuItem("Copy", false);
copy.addEventListener(Event.SELECT, onCopyCommand);
editMenu.addItem(copy);
Se puede detectar un evento select en el elemento de comando mismo (como se muestra en el ejemplo) o se puede
detectar el evento
select en un objeto de menú principal.
93
Nota: los elementos de menú que representan submenús y líneas separadoras no distribuyen eventos
select y por ende
no se pueden utilizar como comandos.
Creación de una línea separadora de menú
Para crear una línea separadora, se debe crear un NativeMenuItem, definir el parámetro isSeparator en true en el
constructor. Luego añadir el elemento separador al menú en la ubicación correcta:
var separatorA:NativeMenuItem = new NativeMenuItem("A", true);
editMenu.addItem(separatorA);
La etiqueta especificada para el separador, si hay una, no se muestra.
Menús contextuales
En el contenido SWF, a cualquier objeto que hereda de InteractiveObject se le puede asignar un menú contextual
asignando un objeto de menú a la propiedad
tipo NativeMenu o ContextMenu.
Puede detectar eventos de menú nativo o eventos de menús contextuales con el uso de las clases ContextMenu y
ContextMenuItem; ambas se distribuyen. Una ventaja que ofrecen las propiedades del objeto ContextMenuEvent es
que contextMenuOwner identifica el objeto al que se asocia el menú y
hizo clic para abrir el menú. Esta información no está disponible en el objeto NativeMenuEvent.
contextMenu. El objeto de menú asignado a contextMenu puede ser del
mouseTarget identifica el objeto en el que se
El siguiente ejemplo crea un objeto Sprite y añade un simple menú contextual de edición:
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.