有什么方法可以将ActionScript 3(Flex / AIR)项目打印到标准输出?
时间:2020-03-05 18:46:11 来源:igfitidea点击:
有什么方法可以在执行时从ActionScript 3项目打印内容编译二进制文件到stdout?
从我收集的数据来看,人们一直在通过编写依赖于本地套接字连接的hack和写入本地文件系统中文件的AIR应用程序来绕过此限制,但这几乎可以解决-Flash Player和Adobe的AIR运行时。
是否有任何项目(例如基于Tamarin代码)正在尝试实现可提供此类功能的项目?
解决方案
回答
就像我们说的那样,没有Adobe创建的方法可以执行此操作,但是Zinc可能会更好,它类似于AIR,但提供了基于Flash的应用程序的真实OS集成。看一下API文档,那里应该有东西。
回答
如果使用调试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
回答
使用Linux上的AIR,可以很容易地将其写入stdout,因为该进程可以将自己的文件描述符视为/ dev中的文件。
对于stdout,将/ 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()"之间的区别,后者将避免在stdout上输出乱码。