有没有什么办法可以让一个从ActionScript 3项目打印的东西编译成标准输出执行时有什么办法?将ActionScript 3(Flex/AIR)项目打印到标准输出的任何方式?
从我收集的信息来看,人们一直在通过编写依赖本地套接字连接的黑客和写入本地文件系统中的文件的AIR应用程序来解决此限制问题,但这非常简单 - 显然不可能使用Adobe的Flash Player和AIR运行时。
是否有任何项目(例如基于Tamarin代码)试图实现某些可提供此类功能的项目?
有没有什么办法可以让一个从ActionScript 3项目打印的东西编译成标准输出执行时有什么办法?将ActionScript 3(Flex/AIR)项目打印到标准输出的任何方式?
从我收集的信息来看,人们一直在通过编写依赖本地套接字连接的黑客和写入本地文件系统中的文件的AIR应用程序来解决此限制问题,但这非常简单 - 显然不可能使用Adobe的Flash Player和AIR运行时。
是否有任何项目(例如基于Tamarin代码)试图实现某些可提供此类功能的项目?
Linux上,AIR,很容易写入stdout,因为过程可以看到自己的文件描述符在/ dev下的文件。
对于标准输出,打开/dev/fd/1
或/dev/stdout
作为FileStream
,然后写入。
实施例:
var stdout : FileStream = new FileStream();
stdout.open(new File("/dev/fd/1"), FileMode.WRITE);
stdout.writeUTFBytes("test\n");
stdout.close();
注:为writeUTF()
和writeUTFBytes()
之间的差参见this answer - 后者将避免在stdout乱码输出。
如果您使用的是调试Flash Player,则可以让Flash Player将跟踪消息记录到系统上的文件中。
如果你想要实时消息,那么你可以尾随文件。
更多信息:
http://blog.flexexamples.com/2007/08/26/debugging-flex-applications-with-mmcfg-and-flashlogtxt/
迈克室
Redtamarin似乎是能够做到这一点(即使它仍然处于起步阶段):
test.as
的内容:
import avmplus.System;
import redtamarin.version;
trace("hello world");
trace("avmplus v" + System.getAvmplusVersion());
trace("redtamarin v" + redtamarin.version);
在命令行:
$ ./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