flash - ¿Pueden las aplicaciones de OpenLaszlo acceder a las API de AIR?
interop adobe (2)
Parece que OpenLaszlo puede ejecutarse en AIR . Lo que es menos obvio es si las aplicaciones OpenLaszlo pueden usar las API específicas de AIR, como el acceso al sistema de archivos. Si es así, ¿cómo se hace esto exactamente?
Si bien no tengo ninguna información específica, el artículo que vinculó menciona que la ventana de su aplicación se puede arrastrar y cerrar. Esas son API solo de AIR (vea la clase NativeWindow), así que, presumiblemente, lo que está preguntando debe ser posible hasta cierto punto.
Sin embargo, tengo entendido que OpenLaszlo intenta no implementar cosas que se pueden hacer en Flash, pero no (digamos) DHTML, por lo que puede ser menos obvio cómo hacer cosas como acceso a archivos locales. Probablemente desee descargar la fuente vinculada en el artículo y ver cómo implementó la ventana arrastrar / cerrar.
OpenLaszlo implementa características que están disponibles solo en ciertos tiempos de ejecución. Eso es cierto para la reproducción de audio MP3, la cámara web de Flash Player y el acceso al micrófono, la transmisión RTMP. El compilador OpenLaszlo admite la inserción de código ActionScript directamente en scripts y métodos.
Aquí hay una aplicación de ejemplo que captura los eventos Event.DEACTIVATE y Event.ACTIVATE, y le permite salir de la aplicación haciendo clic / tocando la vista roja.
Las API de ActionScript 3 se pueden importar usando la etiqueta <passthrough>, que se puede usar dentro del lienzo, las definiciones de clase o cualquier instancia de etiqueta en su código.
<canvas bgcolor="#ffffff" debug="false" height="100%" width="100%">
<passthrough when="$as3">
import flash.events.Event;
import flash.desktop.NativeApplication;
</passthrough>
<handler name="oninit">
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, __onDeactivate);
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, __onActivate);
</handler>
<method name="__onActivate" args="ev">
Debug.info("onActivate");
Debug.info("frame rate is " + this.getDisplayObject().stage.frameRate)
</method>
<method name="__onDeactivate" args="ev">
Debug.info("onDeactivate");
Debug.info("frame rate is " + this.getDisplayObject().stage.frameRate)
</method>
<view width="80%" height="50%" bgcolor="red" clickable="true">
<passthrough>
import flash.desktop.NativeApplication;
</passthrough>
<handler name="onclick">
NativeApplication.nativeApplication.exit();
</handler>
</view>
</canvas>
Si desea que el código se ejecute únicamente para el tiempo de ejecución de SWFx, puede verificarlo colocando bloques en los bloques que comprueban la propiedad $ as3:
if ($as3) {
// Insert some code for the SWFx runtime or AIR applications only
}
Usando el enfoque, es fácil reutilizar el código LZX para aplicaciones DHTML, SWFx o AIR.