AIR Beta 3 es un emocionante liberación que nos lleva un paso más cerca de AIRE 1,0. A diferencia de la multitud de cambios introducidos en el paso de la versión Beta 1 a AIR AIR Beta 2, los cambios en AIRE Beta 3 son mucho más sutiles. Si bien esta estabilidad indica la creciente madurez del producto, AIR Beta 3 es una actualización y requerirá algunos cambios en las aplicaciones. Puedes leer las notas de la versión, por supuesto, pero en el progreso de la actualización de mi cuarenta y además de las aplicaciones aéreas, aquí son los cambios comunes que he encontrado. Aplicación descriptor de archivo Las buenas noticias son que la mayoría de los cambios se produzcan por adelantado y son muy fáciles de actualizar. Los atributos XML "versión" y de "id" que se utiliza para estar en la raíz "solicitud" nodo, pero que ahora han ido en solitario y son nodos por su propia cuenta. También solía ser un nodo llamado "título" que vinieron antes de la "initialWindow" bloque. Nodo que ahora se llama "nombre de archivo" que se utiliza para la solicitud de nombre de archivo y es obligatorio. La mayoría de los otros nodos son los mismos, o van a trabajar, como es de AIR Beta 2.
Aplicación Directorio de recursos
Por razones de seguridad, hay una serie de cambios introducidos en el "directorio de la aplicación de recursos" en AIR Beta 2. Uno de los que puede ser que haya perdido, en especial durante el desarrollo en las actividades cotidianas, es que usted no puede escribir en el directorio del recurso. Directorio que está diseñado para contener sólo el núcleo archivos que envía con la solicitud. Esto es realmente importante si se envía una base de datos de archivo o los gustos con su solicitud, según lo tendrás que pasar a otra parte de la "primera ejecución" de la solicitud. En cuanto a la API va, ¿cuál es la File.applicationResourceDirectory propiedad es ahora el File.applicationDirectory propiedad. También tenga en cuenta que si está desarrollando aplicaciones con HTML AIR, seguridad de la bondad de todo esto significa que usted puede usar un IFRAME para la mayor parte de su contenido. La caja de arena puente utilizado para exigir que la "documentRoot" la propiedad tenía un valor de la "aplicación de los recursos: /". El valor de AIR Beta 3 es, simplemente, "app: /" eliminar la redundancia de los "recursos" plazo
id="viewport"
src="ui.html"
sandboxRoot="http://SomeRemoteDomain.com/"
documentRoot="app:/" />
Html control trasladó a MX paquete
Dado que la mayoría de mis ejemplos tienden a cruzar libremente más de las líneas de JavaScript y Flash, yo me encontré a menudo refiriéndose a la "window.htmlControl" propiedad. El HTML correcto se ha movido a lo largo de la Flex SDK, lo que significa que ahora es una parte de la "MX" conjunto de medidas y no se incluye en el tiempo de ejecución en sí. La buena noticia es que hay una "window.htmlLoader" en gran parte de propiedad que toma su lugar.
Funcionalidad, como la "etapa" de propiedad, se halla ya en la "window.htmlLoader" propiedad de JavaScript.
function doSave(){ var png = null; var capture = null; var stream = new air.FileStream(); var temp = air.File.applicationStorageDirectory.resolvePath( 'capture.png' ); capture = new air.BitmapData( window.htmlLoader.stage.stageWidth, window.htmlLoader.stage.stageHeight ); capture.draw( window.htmlLoader ); // Encode image png = runtime.com.adobe.images.PNGEncoder.encode( capture ); stream.open( temp, air.FileMode.WRITE ); stream.writeBytes( png, 0, 0 ); stream.close();
Creación de una ventana de los nativos de HTML
Cuando se crean nuevas ventanas nativo de JavaScript, me pareció más eficaz para llegar a profundizar en el Flash lado de la casa. La buena noticia es que ahora es mucho más fácil utilizar el método HTMLLoader.createRootWindow (). Usted ve que poco "HTMLLoader" parte de clase? Bien sabe usted que hay en el nuevo "window.htmlLoader" la propiedad, ¿verdad? Así que hay que referirse a ese derecho? »Pues no! Esta dejado perplejos a mí por un tiempo, pero el createRootWindow () es un método estático y por lo tanto no requiere una instancia de HTMLLoader para operar.
function doWindow(){ var init = new air.NativeWindowInitOptions(); var bounds = null; var win = null; var login = air.File.applicationDirectory.resolvePath( 'login.html' ); bounds = new air.Rectangle( ( air.Capabilities.screenResolutionX - 325 ) / 2, ( air.Capabilities.screenResolutionY - 145 ) / 2, 325, 145 ); init.minimizable = false; init.maximizable = false; init.resizable = false; win = air.HTMLLoader.createRootWindow( true, init, false, bounds ); win.load( new air.URLRequest( login.url ) );
Flash ahora apoyado en HTML
Creo que el encabezado lo dice todo - el contenido de Flash se apoya finalmente en el interior del motor HTML! Es verdad! Tome un pase por el encendido debate nuevo sitio web de Adobe para ver con sus propios AIR aplicación. ¿Qué? No ha construido su propio navegador poco? Pues bien entonces, aquí tienes un sencillo para usted! Si obtiene tan entusiasmados con esta que desea enviar una captura de pantalla a tus amigos, sólo tienes que arrastrar el botón etiquetado "Arrastre" de la AIR aplicación en el escritorio. Mejor que acaba de Flash sin embargo, esta es la última y mejor versión del jugador H.264 para incluir soporte para su visualización de alta definición, para incluir la aceleración de hardware. Tengo un ejemplo que muestra cómo construir un reproductor de vídeo de JavaScript usando la clase Flash Video. Esto, por supuesto, ahora ya no es necesario. Si eres un desarrollador busca a JavaScript fácilmente palanca de vídeo Flash, y luego echar un vistazo al-Ajax Flash Video Componente, que ¡ya que cubre con más detalle en una futura publicación. Hay un lado negativo efecto a la bondad de todo esto sin embargo, es decir, que Flash apoyo que se ha logrado mediante la inclusión de una versión completa del Flash Player en sí, y no por el uso de una latente en el aire en tiempo de ejecución. Sí, el equipo de producto comprende la inyección de dependencias. Sí, el equipo entiende que este producto aumenta el volumen global de tiempo de ejecución de la misma. Tenga la seguridad de que el producto equipo agradece los posibles problemas mediante la adopción de este enfoque, pero después de profundas investigaciones y acalorado debate, en su opinión, este fue el mejor para el largo plazo. Abrir una base de datos de conexión Esta es mucho más sutil, pero encontrarás en él donde quiera utilizar la base de datos SQLite incrustados. En AIR Beta 2, el constructor toma SQLConnection boolean argumento para especificar si la conexión es sincrónica o asincrónica. En la Beta 3 AIR SQLConnection constructor ya no tiene ningún argumento. Al igual que con el archivo IO, que especifique que usted es el modo de apertura de la conexión a base de datos llamando a los respectivos método abierto (es decir, SQLConnection.open o SQLConnection.openAsync () ()). Uno de los otros cambios sutiles de la SQLConnection.open () métodos (uno) es que los argumentos han cambiado ligeramente. El segundo argumento que se utiliza para ser un valor booleano que indica si debe o no AIRE crear automáticamente la base de datos si no existe. Este ha sido reemplazado por diversas constantes en la nueva clase SQLMode. El SQLMode constantes están SQLMode.CREATE, SQLMode.READ y SQLMode.UPDATE. El SQLMode.CREATE opción es lo que el viejo valor booleano utilizan para representar, y se especifica que la base de datos debe ser creado si no existe y disponible para actualizaciones. El SQLMode.READ opción indica que una base de datos debe ser abierto sólo para las operaciones de lectura. Por último, pero no menos importante es la SQLMode.UPDATE opción que esperar una base de datos existente que se abrió para las actualizaciones.
Creo que el encabezado lo dice todo - el contenido de Flash se apoya finalmente en el interior del motor HTML! Es verdad! Tome un pase por el encendido debate nuevo sitio web de Adobe para ver con sus propios AIR aplicación. ¿Qué? No ha construido su propio navegador poco? Pues bien entonces, aquí tienes un sencillo para usted! Si obtiene tan entusiasmados con esta que desea enviar una captura de pantalla a tus amigos, sólo tienes que arrastrar el botón etiquetado "Arrastre" de la AIR aplicación en el escritorio. Mejor que acaba de Flash sin embargo, esta es la última y mejor versión del jugador H.264 para incluir soporte para su visualización de alta definición, para incluir la aceleración de hardware. Tengo un ejemplo que muestra cómo construir un reproductor de vídeo de JavaScript usando la clase Flash Video. Esto, por supuesto, ahora ya no es necesario. Si eres un desarrollador busca a JavaScript fácilmente palanca de vídeo Flash, y luego echar un vistazo al-Ajax Flash Video Componente, que ¡ya que cubre con más detalle en una futura publicación. Hay un lado negativo efecto a la bondad de todo esto sin embargo, es decir, que Flash apoyo que se ha logrado mediante la inclusión de una versión completa del Flash Player en sí, y no por el uso de una latente en el aire en tiempo de ejecución. Sí, el equipo de producto comprende la inyección de dependencias. Sí, el equipo entiende que este producto aumenta el volumen global de tiempo de ejecución de la misma. Tenga la seguridad de que el producto equipo agradece los posibles problemas mediante la adopción de este enfoque, pero después de profundas investigaciones y acalorado debate, en su opinión, este fue el mejor para el largo plazo. Abrir una base de datos de conexión Esta es mucho más sutil, pero encontrarás en él donde quiera utilizar la base de datos SQLite incrustados. En AIR Beta 2, el constructor toma SQLConnection boolean argumento para especificar si la conexión es sincrónica o asincrónica. En la Beta 3 AIR SQLConnection constructor ya no tiene ningún argumento. Al igual que con el archivo IO, que especifique que usted es el modo de apertura de la conexión a base de datos llamando a los respectivos método abierto (es decir, SQLConnection.open o SQLConnection.openAsync () ()). Uno de los otros cambios sutiles de la SQLConnection.open () métodos (uno) es que los argumentos han cambiado ligeramente. El segundo argumento que se utiliza para ser un valor booleano que indica si debe o no AIRE crear automáticamente la base de datos si no existe. Este ha sido reemplazado por diversas constantes en la nueva clase SQLMode. El SQLMode constantes están SQLMode.CREATE, SQLMode.READ y SQLMode.UPDATE. El SQLMode.CREATE opción es lo que el viejo valor booleano utilizan para representar, y se especifica que la base de datos debe ser creado si no existe y disponible para actualizaciones. El SQLMode.READ opción indica que una base de datos debe ser abierto sólo para las operaciones de lectura. Por último, pero no menos importante es la SQLMode.UPDATE opción que esperar una base de datos existente que se abrió para las actualizaciones." name=gtrans>
Flash ahora apoyado en HTML
Creo que el encabezado lo dice todo - el contenido de Flash se apoya finalmente en el interior del motor HTML! Es verdad! Tome un pase por el encendido debate nuevo sitio web de Adobe para ver con sus propios AIR aplicación. ¿Qué? No ha construido su propio navegador poco? Pues bien entonces, aquí tienes un sencillo para usted! Si obtiene tan entusiasmados con esta que desea enviar una captura de pantalla a tus amigos, sólo tienes que arrastrar el botón etiquetado "Arrastre" de la AIR aplicación en el escritorio.
Mejor que acaba de Flash sin embargo, esta es la última y mejor versión del jugador H.264 para incluir soporte para su visualización de alta definición, para incluir la aceleración de hardware. Tengo un ejemplo que muestra cómo construir un reproductor de vídeo de JavaScript usando la clase Flash Video. Esto, por supuesto, ahora ya no es necesario. Si eres un desarrollador busca a JavaScript fácilmente palanca de vídeo Flash, y luego echar un vistazo al-Ajax Flash Video Componente, que ¡ya que cubre con más detalle en una futura publicación.
Hay un lado negativo efecto a la bondad de todo esto sin embargo, es decir, que Flash apoyo que se ha logrado mediante la inclusión de una versión completa del Flash Player en sí, y no por el uso de una latente en el aire en tiempo de ejecución. Sí, el equipo de producto comprende la inyección de dependencias. Sí, el equipo entiende que este producto aumenta el volumen global de tiempo de ejecución de la misma. Tenga la seguridad de que el producto equipo agradece los posibles problemas mediante la adopción de este enfoque, pero después de profundas investigaciones y acalorado debate, en su opinión, este fue el mejor para el largo plazo.
Abrir una base de datos de conexión
Esta es mucho más sutil, pero encontrarás en él donde quiera utilizar la base de datos SQLite incrustados. En AIR Beta 2, el constructor toma SQLConnection boolean argumento para especificar si la conexión es sincrónica o asincrónica. En la Beta 3 AIR SQLConnection constructor ya no tiene ningún argumento. Al igual que con el archivo IO, que especifique que usted es el modo de apertura de la conexión a base de datos llamando a los respectivos método abierto (es decir, SQLConnection.open o SQLConnection.openAsync () ()).
Uno de los otros cambios sutiles de la SQLConnection.open () métodos (uno) es que los argumentos han cambiado ligeramente. El segundo argumento que se utiliza para ser un valor booleano que indica si debe o no AIRE crear automáticamente la base de datos si no existe. Este ha sido reemplazado por diversas constantes en la nueva clase SQLMode.
El SQLMode constantes están SQLMode.CREATE, SQLMode.READ y SQLMode.UPDATE. El SQLMode.CREATE opción es lo que el viejo valor booleano utilizan para representar, y se especifica que la base de datos debe ser creado si no existe y disponible para actualizaciones. El SQLMode.READ opción indica que una base de datos debe ser abierto sólo para las operaciones de lectura. Por último, pero no menos importante es la SQLMode.UPDATE opción que esperar una base de datos existente que se abrió para las actualizaciones.
function doLoad(){ var file = air.File.applicationDirectory.resolvePath( 'crm.db' ); db = new air.SQLConnection(); db.addEventListener( air.SQLEvent.OPEN, doDbOpen ); db.open( file, air.SQLMode.CREATE );
WebKit arrastrar y soltar
Esto realmente se convirtió en un tiempo cuando yo era chupar más de portar todas mis aplicaciones de muestra, como lo había apalancado Flash sólo el arrastrar y soltar en HTMLControl gestores de eventos. Como se mencionó anteriormente, que el control no existe y ha sido sustituido por un HTMLLoader propiedad. Puede intentar el gancho de edad a los oyentes a que la propiedad, y mientras usted no sale un mensaje de error, que no encontrará una operación de arrastrar y soltar tampoco. La manera de lograr esto en AIR Beta 3 es utilizar el arrastrar y soltar los ganchos que WebKit mismo establece. En el mundo del navegador, hemos detectado que la mayoría de los desarrolladores no usan esta característica Safari porque a) es generalmente una función de Safari y b) la documentación sobre el proyecto WebKit sitio es atrozmente falta. Tengo la intención de cubrir esta más a fondo en una futura entrada en el blog, pero mientras tanto he adjuntado una arrastrar-y-soltar ejemplo construido por Dragos Georgita AIR producto en el equipo. Abarca la mayoría de todo lo que necesitará para llegar a la idea de las internas. A un alto nivel, si se acepta el contenido de arrastre, entonces añadir la onDragOver y onDrop gestores de eventos a los elementos que desee a aceptar la operación. Esto es mucho mejor que mi anterior Flash aplicación, ya que permite la aceptación de una operación de arrastrar y soltar para cada elemento (es decir, arrastra una foto a un DIV o IMG, que representa un marco personalizado). Usted puede aceptar distintos tipos de contenido mediante la prevención de la conducta evento predeterminado (ieepreventDefault ()) en el manejador de evento on.
function doDrop( e ){ var elem = document.createElement( 'div' ); elem.innerText = e.dataTransfer.getData( 'text/plain' ); elem.className = 'drag'; document.body.appendChild( elem );}function doOver( e ){ e.preventDefault();}
Si está arrastrando el contenido de AIR, entonces, en primer lugar hay que añadir el estilo "-khtml-user-arrastrar" a los elementos que quieres tratar de arrastrar y soltar. El siguiente paso es la escucha de la onDragStart evento y manejarlo añadiendo el contenido deseado para el evento. Si va a utilizar una imagen personalizada para el arrastre miniatura tiene dos opciones. La primera opción es apuntar a un elemento IMG. Si desea utilizar un objeto BitmapData, entonces, hacer caso omiso de todo esto y todavía utiliza el NativeDragManager. Ah, y que ha cambiado demasiado - solía ser simplemente DragManager
function doStart( e )
{
e.dataTransfer.setData( 'text/plain', 'testing' );
e.dataTransfer.effectAllowed = 'copy';
e.dataTransfer.setDragImage( dragImage, 24, 24 );
e.stopPropagation();
}
Esto no pretende ser un sustituto de cualquiera de la documentación, o las notas de la versión, así que por favor, asegúrate de leer aquellos a fondo. Estos son simplemente los cambios que he encontrado y quería compartir con la comunidad. He intentado poner el código de lo que pude para ayudarle a empezar, y abarcan todo bastante a fondo. Si tiene más preguntas, no dude en dejar un comentario y me pondré una respuesta para usted. Entre tanto, el disfrute de AIR Beta 3.