Apache flex 是否可以创建一个';命令行';swf?
我希望能够编写一个可以作为命令行应用程序运行的.swf文件。换句话说,我将能够创建actionscript类,这些类可以与stdin和stdout交互,然后可以直接在命令行中执行该.swf 我怀疑这是不可能的。有人能证实吗 编辑: 有几个答案指出,在命令行工作中使用Flash可能不是最佳选择。我完全同意大多数情况。我之所以问这个问题,是因为我想生成一些AS3代码,在运行时内思考AS3类比解析代码或遍历asdoc生成的中间XML更容易。我现在正在Ruby中使用XML方法,但希望有一个更干净的解决方案 不,不可能。你能做的最好的是一个独立的应用程序(可以用Flash制作,也可以用投影仪版本的Flash player制作,可以从Adobe网站上获得) 你为什么要这么做呢?Flash是很棒的,因为它有强大的GUI功能。还有很多其他编程语言更适合命令行(Python或Ruby,或者,天哪,甚至Perl)显然有一个项目旨在创建AS3的开源实现。给出编译AS3脚本并从命令行运行它的一些细节Apache flex 是否可以创建一个';命令行';swf?,apache-flex,flash,actionscript-3,actionscript,Apache Flex,Flash,Actionscript 3,Actionscript,我希望能够编写一个可以作为命令行应用程序运行的.swf文件。换句话说,我将能够创建actionscript类,这些类可以与stdin和stdout交互,然后可以直接在命令行中执行该.swf 我怀疑这是不可能的。有人能证实吗 编辑: 有几个答案指出,在命令行工作中使用Flash可能不是最佳选择。我完全同意大多数情况。我之所以问这个问题,是因为我想生成一些AS3代码,在运行时内思考AS3类比解析代码或遍历asdoc生成的中间XML更容易。我现在正在Ruby中使用XML方法,但希望有一个更干净的解决方
我不知道塔玛林有多稳定,但这可能是你目前最好的选择。另一方面,我非常同意@zenazn的观点,你最好长期学习一种更为通用的语言,但如果你真的想使用Actionscript,不要让任何人阻止你:)现在用一个简单的SWF是无法做到这一点的 但是,您可以将Flash内容发布为AIR应用程序。然后可以从命令行调用该应用程序,您可以从的属性中收集参数。基本思想如下所示:
NativeApplication.nativeApplication.addEventListener(
InvokeEvent.INVOKE, onInvoke );
// ...
function onInvoke( e:InvokeEvent ) {
var numArguments:int = e.arguments.length;
// ...
}
然而,请注意,这基本上是一条单行道。您可以获取命令行参数,但Flash仍然没有考虑stdin和stdout。您可以查看一下,它与AS3非常相似,可以编译字节码,可以在命令行上运行
同样有趣的是,它是一种用flash电影创建桌面应用程序的框架。(与AIR类似,但可以完全访问系统。)如果您真的这么想,您可以打开一个本地套接字,然后让一个助手程序从命令行运行,并与打开的SWF通信
这可能是学习另一种语言的好时机。我可以推荐Java吗?事实上,有一个项目使它成为可能。RedTamarin是一个扩展AS3(技术上是Tamarin项目,即Adobe/Mozilla ECMAScript项目)以访问低级库(即POSIX)的项目。在它目前的状态下,它似乎适合于像shell脚本这样的程序,这听起来就像是你正在寻找的东西 试一试:
现在可以使用AIR 2.0。检查以开始。是!这实际上是可能的。 您可以创建一个纯AS3 AIR项目(没有任何应用程序窗口),并使用ADL(AIR调试启动器)从命令行运行 ADL将执行您的SWF,并在运行时将您提供的任何参数直接传递给您的应用程序,所有这些参数都来自命令行!要读取AS3中的参数,只需将以下代码添加到主类:
package
{
import flash.desktop.NativeApplication;
import flash.display.Sprite;
import flash.events.InvokeEvent;
public class CmdLine extends Sprite
{
public function CmdLine()
{
NativeApplication.nativeApplication.addEventListener(
InvokeEvent.INVOKE, onInvokeEvent);
function onInvokeEvent(invocation:InvokeEvent):void {
trace(invocation.arguments);
}
}
}
}
主类仍将扩展Sprite
,但除非创建NativeWindow
对象,否则不会看到任何UI。如果您使用的是Flash Builder,只需创建一个新的AIR项目,并将主.mxml
文件的扩展名重命名为.as
(在完成向导之前)
以下是有关ADL的更多信息:
此外,这将非常有用:
您可以使用
trace()
完成所有输出,写入文件,甚至直接写入标准输出,如图所示。您可以使用redtamarin与标准输入、标准输出和标准输出进行交互
请参见此处的示例/文档
Flash和ActionScript 3之间存在差异
Flash是一种运行时,AS3是一种语言
我不明白为什么AS3不是一种好的编程语言
用于命令行和/或服务器端
现在,redtamarin只是一个运行时,它允许您
在命令行上运行AS3源代码
此外,根据您的需要,您可以以不同的方式使用它
套接字、操作系统信息等。最近我有一个类似的问题。我花了几天时间自己回答,但您可以创建一个.swf并完全从命令行执行它
谢谢您的回复。我给我的问题添加了一个解释,解释为什么我想在命令行上使用as3。这个答案并不完全正确,有几种方法可以通过