¿Alguna forma de imprimir un proyecto ActionScript 3 (Flex/AIR) en una salida estándar?
-
09-06-2019 - |
Pregunta
¿Hay alguna forma de compilar un binario a partir de un proyecto ActionScript 3 para imprimir elementos en salida estándar cuando se ejecuta?
Por lo que he recopilado, la gente ha estado sorteando esta limitación escribiendo hacks que dependen de conexiones de socket locales y aplicaciones de AIR que escriben en archivos en el sistema de archivos local, pero eso es todo: obviamente no es posible con Flash Player. y tiempos de ejecución de AIR de Adobe.
¿Hay algún proyecto (por ej.basado en el código de Tamarin) que está intentando implementar algo que proporcione este tipo de funcionalidad?
Solución
Con AIR en Linux, es fácil escribir en la salida estándar, ya que el proceso puede ver sus propios descriptores de archivos como archivos en /dev.
Para salida estándar, abra /dev/fd/1
o /dev/stdout
como un FileStream
, luego escribe a eso.
Ejemplo:
var stdout : FileStream = new FileStream();
stdout.open(new File("/dev/fd/1"), FileMode.WRITE);
stdout.writeUTFBytes("test\n");
stdout.close();
Nota: Ver esta respuesta por la diferencia entre writeUTF()
y writeUTFBytes()
- este último evitará resultados confusos en la salida estándar.
Otros consejos
Como usted dice, no existe una forma creada por Adobe para hacer esto, pero es posible que tenga más suerte con Zinc, es similar a AIR pero proporciona una integración real del sistema operativo de aplicaciones basadas en Flash.Mira aunque el Documentos API, debería haber algo allí.
Si está utilizando un Flash Player de depuración, puede hacer que Flash Player registre los mensajes de seguimiento en un archivo de su sistema.
Si desea mensajes en tiempo real, puede seguir el archivo.
Más información:
http://blog.flexexamples.com/2007/08/26/debugging-flex-applications-with-mmcfg-and-flashlogtxt/
cámaras de micrófono
malla@adobe.com
tamarino rojo parece ser capaz de hacer esto (aunque todavía está en su infancia):
Contenido de test.as
:
import avmplus.System;
import redtamarin.version;
trace( "hello world" );
trace( "avmplus v" + System.getAvmplusVersion() );
trace( "redtamarin v" + redtamarin.version );
En la línea de comando:
$ ./buildEXE.sh test.as
test.abc, 243 bytes written
test.exe, 2191963 bytes written
test.abc, 243 bytes written
test.exe, 2178811 bytes written
$ ./test
hello world
avmplus v1.0 cyclone (redshell)
redtamarin v0.1.0.92