View
2.125
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Crear una aplicación AIR con Flash y
ActionScriptUnidad 14
Objetivos
Usar Flash para crear una aplicación de plataforma cruzada (cross-plataform)
Asignar la configuración para crear una aplicación Air
Personalizar la aplicación AIR y el instalador
Definir los iconos de la aplicación AIR
Objetivos
Usar las clases AIR para interactuar con el sistema operativo
Publicar e instalar una aplicación AIR Usar las propiedades drag&drop del
sistema operativo con la aplicación AIR
Usar las clases File y FileStream para leer datos desde un archivo externo
AIR
AIR (Adobe Integrated Runtime) es una herramienta para crear aplicaciones de escritorio, utilizando los conocimientos de ActionScript
Se pueden crear aplicaciones AIR desde Flash, Flex y Dreamweaver
Las aplicaciones AIR funcionan en Windows, Macintosh y Linux
AIR
Con AIR podrá:– Leer y escribir archivos de datos– Copiar y pasar objetos del portapapeles
del sistema operativo– Se tiene propiedades de navegador– Integración con archivos PDF– Crear base de datos locales
ActionScript para AIR
Existen clases especificas para AIR, que sólo funcionan con ActionScript 3.0.
Todas las clases de Flash AS 3.0 funcionan para AIR.
Archivo descriptor
Las aplicaciones AIR tienen un archivo XML con la descripción de la misma, incluyendo los iconos que se utilizarán
Los iconos tienen 4 tamaños predeterminados, en formato PNG.
Las aplicaciones AIR cuentan con una firma digital de seguridad
Dicha firma debe de ser adquirida a una empresa que se dedica a ello
Configuración de una aplicación AIR
Archivo descriptor
Usted puede crear su propia firma digital, pero no tiene la misma seguridad y en la instalación se indicará que el proveedor del software es “desconocido”
Se puede generar una firma digital tipo 1024_RSA y 2048-RSA (más segura)
Indique también los archivos que deben ser incluidos dentro de la aplicación
Paquete de aplicación
Un archivo con extensión .air es creado, el cual es el instalador (deberá tener los privilegios en su sistema operativo para crear el paquete).
Al ejecutar este paquete, su aplicación deberá ser correctamente instalada en su sistema operativo
Manejo del portapapeles (clipboard) del sistema
operativo
Clase NativeDragEvent
La clase NativeDragEvent es utilizada para detectar los objetos que se mueven por medio del sistema operativo– nativeDragStart: cuando comienza la
operación de arrastrar. – nativeDragUpdate: mientras la
operación de arrastrar está en curso. – nativeDragComplete: cuando el
usuario suelta el elemento arrastrado (se acepte o no la operación de soltar).
Clase NativeDragEvent
Al arrastrar un objeto en el sistema operativo, se genera un objeto NativeDragManager
El objeto que detectará dentro de Flash a los objetos externos, se marca con el método NativeDragManager.doDrag()
Estos objetos pueden detectar los siguientes eventos:
Clase NativeDragEvent
nativeDragEnter: cuando el objeto arrastrardo no sale de los límites del objeto.
nativeDragOver: mientras el gesto de arrastrar permanece dentro de los límites del objeto.
nativeDragExit: cuando el gesto de arrastrar sale de los límites del objeto.
Clase NativeDragEvent
nativeDragDrop: cuando el usuario suelta el elemento sobre el objeto y éste ha aceptado previamente la operación de soltar mediante una llamada a NativeDragManager.acceptDragDrop().
Clase NativeDragEvent
En este ejemplo se utilizará:– El evento NATIVE_DRAG_ENTER para
indicar que el objeto está sobre el objeto habilitado en Flash
– El evento NATIVE_DRAG_DROP para indicar que el objeto fue soltado sobre el objeto habilitado en Flash
Formatos del clipboard
Al momento de ser arrastrado, AIR puede determinar el tipo de objeto que se arrastra (texto, bitmap, HTML, etc)
En el sistema operativo, se pueden arrastrar más de un archivo, con lo cual se genera un arreglo con los archivos que han sido arrastrados por el usuario
Los archivos arrastrados pueden ser de diferente tipo
Clase NativeDragEvent
Con el método .hasFormat() se puede verificar si el portapapeles contiene información
Este método puede tener uno de los siguientes parámetros:
Clase NativeDragEvent
Formato Tipo Descripción
ClipboardFormats.TEXT_FORMAT String datos de cadena
ClipboardFormats.HTML_FORMAT String datos de cadena HTML
ClipboardFormats.URL_FORMAT String Cadena URL (sólo AIR)
ClipboardFormats.RICH_TEXT_FORMAT
ByteArray
Datos con formato de texto enriquecido
Clase NativeDragEvent
Formato Tipo Descripción
ClipboardFormats.BITMAP_FORMAT BitmapData
datos de mapa de bits (sólo AIR)
ClipboardFormats.FILE_LIST_FORMAT
conjunto de File
conjunto de archivos (sólo AIR)
Nombre de formato personalizado cualquiera
referencia a objeto y clon serializado
Clase NativeDragEventworkArea_mc.addEventListener(NativeDragEvent.N
ATIVE_DRAG_ENTER,onDragEnter);function onDragEnter(e:NativeDragEvent):void {
if(e.clipboard.hasFormat(ClipboardFormats.FILE_LIST_FORMAT)) {
NativeDragManager.acceptDragDrop(workArea_mc);}
}
Evento NATIVE_DRAG_DROP
El evento NATIVE_DRAG_DROP se lanza cuando el usuario suelta los objetos arrastrados desde el sistema operativo, sobre el objeto habilitado en Flash
Tenemos que recuperar la información de los objetos en un arreglo local:
var cbFiles:Array = e.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT,ClipboardTransferMode.CLONE_ONLY) as Array;
Evento NATIVE_DRAG_DROP
El método clipboard.getdata() recupera la información del portapapeles de los archivos descritos en FILE_LIST_FORMAT
El segundo parámetro, CLONE_ONLY indica que se usará una copia del archivo y no su referencia
Después de esto crearemos dos arreglos para validar que los archivos arrastrados sean del formato de nuestros componentes
Manejo de archivos con AIR
Clases File
Objeto File que representa una ruta de archivo o de directorio existente, o bien uno que aún no exista.
La clase File tiene varias propiedades y métodos para obtener información sobre el sistema de archivos y las operaciones permitidas (por ejemplo, copiar archivos y directorios).
Puede utilizar objetos File con la clase FileStream para leer y escribir archivos.
Clases File La clase File incluye propiedades estáticas que
permiten hacer referencia a las ubicaciones de directorio más utilizadas:– File.applicationStorageDirectory: un directorio de
almacenamiento exclusivo para cada aplicación de AIR instalada
– File.applicationDirectory: el directorio de sólo lectura en el que se instala la aplicación (junto con el resto de archivos instalados)
– File.desktopDirectory: el directorio del escritorio del usuario
– File.documentsDirectory: el directorio de documentos del usuario
– File.userDirectory: el directorio del usuario
La clase FileStream Se utiliza un objeto FileStream para leer y
escribir archivos. Los archivos se pueden abrir de forma sincrónica llamando al método open() o de forma asíncrona llamando al método openAsync().
La ventaja de abrir archivos de forma asíncrona reside en que otro código puede ejecutarse mientras Adobe AIR lee y escribe los procesos en segundo plano.
Cuando se abre de forma asíncrona, los eventos progress se distribuyen como procedimiento de las operaciones.
La clase FileStream
Un objeto File abierto de forma sincrónica se comporta casi como un objeto ByteArray; un archivo que se abre de forma asíncrona se comporta casi como un objeto Socket o URLStream.
Cuando se abre un objeto File de forma sincrónica, la llamada se detiene mientras se leen o escriben los datos solicitados en el archivo subyacente.
Cuando se abre de forma asíncrona, todos los datos escritos en el flujo se guardan en el búfer inmediatamente para escribirse después en el archivo.
La clase FileStream
Los datos que se pueden leer de forma sincrónica en el momento actual se representan mediante la propiedad bytesAvailable.
Una aplicación que procesa entradas asíncronas suele registrar eventos progress y consumir los datos a medida que están disponibles mediante llamadas a métodos de lectura. Una aplicación también puede esperar a que todos los datos estén disponibles registrando el evento complete.
Abrir un archivo
open(file:File, fileMode:String):void Abre el objeto FileStream de forma
sincrónica y señala al archivo especificado por el parámetro file.
En sistemas que admitan el bloqueo de archivos, un archivo abierto en modo de "escritura" o de "actualización" (FileMode.WRITE o FileMode.UPDATE) no se puede leer hasta que se cierra.
FileMode
La clase FileMode define constantes de cadena utilizadas por el parámetro fileMode de los métodos open() y openAsync() de la clase FileStream. El parámetro fileMode de estos métodos determina las funciones disponibles en el objeto FileStream una vez abierto el archivo.
FileMode
Las funciones de cada constante de la clase FileMode :
Constante
Lectura Escritura
Creación
Truncar Añadir
READ *
WRITE * * *
APPEND * * *
UPDATE * * *
Leer la información
readUTFBytes(length:uint):String Lee una secuencia de bytes UTF-8
desde el flujo de bytes o el conjunto de bytes y devuelve una cadena.
Cerrar un archivo
close():void No es posible escribir ni leer más
datos una vez llamado el método close(). Si el archivo se ha abierto de forma asíncrona (el objeto FileStream utilizado en el método openAsync() para abrir el archivo), al llamar al método close() el objeto distribuye el evento close.
Preguntas de revisión
¿Cómo se puede convertir una aplicación Flash en una AIR?
¿Cuál es el propósito de una firma digital?
¿Para qué se utilizan los cuatro archivos de iconos?
¿Qué evento se dispara cuando un archivo es arrastrado dentro de un objeto de una aplicación AIR?
Preguntas de revisión
¿Cuál evento es disparado cuando el usuario suelta el objeto sobre una aplicación AIR?
¿Cuáles clases son utilizadas en AIR para leer y escribir en los archivos externos a la aplicación?