有啥方法可以将 ActionScript 3 (Flex/AIR) 项目打印到标准输出?

Posted

技术标签:

【中文标题】有啥方法可以将 ActionScript 3 (Flex/AIR) 项目打印到标准输出?【英文标题】:Any way to have an ActionScript 3 (Flex/AIR) project print to standard output?有什么方法可以将 ActionScript 3 (Flex/AIR) 项目打印到标准输出? 【发布时间】:2010-09-07 12:12:08 【问题描述】:

有什么方法可以让从 ActionScript 3 项目编译的二进制文件在执行时打印到 stdout

根据我收集到的信息,人们一直在通过编写依赖本地套接字连接的 hack 和写入本地文件系统中文件的 AIR 应用程序来绕过这个限制,但仅此而已 - 这显然是不可能的Adobe 的 Flash Player 和 AIR 运行时。

是否有任何项目(例如基于 Tamarin 代码)正在尝试实现可以​​提供这种功能的东西?

【问题讨论】:

【参考方案1】:

正如您所说,没有 Adob​​e 创建的方法可以做到这一点,但您可能对Zinc 有更好的运气,它类似于 AIR,但提供了基于 Flash 的应用程序的真正操作系统集成。看看API docs,应该有什么。

【讨论】:

【参考方案2】:

如果您使用的是调试 Flash Player,则可以让 Flash Player 将跟踪消息记录到系统上的文件中。

如果您想要实时消息,那么您可以跟踪文件。

更多信息:

http://blog.flexexamples.com/2007/08/26/debugging-flex-applications-with-mmcfg-and-flashlogtxt/

麦克室

mesh@adobe.com

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

使用 Linux 上的 AIR,写入标准输出很容易,因为进程可以将自己的文件描述符视为 /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();

注意:请参阅 this answer 了解 writeUTF()writeUTFBytes() 之间的区别 - 后者将避免 stdout 上出现乱码输出。

【讨论】:

以上是关于有啥方法可以将 ActionScript 3 (Flex/AIR) 项目打印到标准输出?的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 2.0 和 ActionScript 3.0 有啥区别

有啥理由在 Flash 中编辑 ActionScript 3 文件实际上不会编辑它?

ActionScript 3.0 通过按键切换视频

如何将 actionscript 2 代码转换为 actionscript 3?

Flex 库和 ActionScript 库有啥区别?

在 flex 应用程序中使用 mxml 优于 actionscript 有啥优势?