2008-09-02 23 views
7

有没有什么办法可以让一个从ActionScript 3项目打印的东西编译成标准输出执行时有什么办法?将ActionScript 3(Flex/AIR)项目打印到标准输出的任何方式?

从我收集的信息来看,人们一直在通过编写依赖本地套接字连接的黑客和写入本地文件系统中的文件的AIR应用程序来解决此限制问题,但这非常简单 - 显然不可能使用Adobe的Flash Player和AIR运行时。

是否有任何项目(例如基于Tamarin代码)试图实现某些可提供此类功能的项目?

回答

9

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乱码输出。

2

就像你说的那样,没有Adobe创建的方法可以做到这一点,但是您可能与Zinc有更好的运气,它与AIR类似,但提供了基于Flash的应用程序的真正OS集成。看看API docs,那里应该有些东西。

1

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 
相关问题