是否有可能创建一个“命令行”的SWF?(Is it possible to create a 

2019-06-24 08:57发布

我希望能够写一个.swf文件是可运行的命令行应用程序。 换句话说,我将能够创建可与stdin和stdout交互的ActionScript类,并可能然后直接在命令行中执行该瑞士法郎。

我怀疑这是不是真的有可能。 任何人都可以证实?

编辑:一对夫妇的答案指出,使用Flash命令行的工作可能不是最好的选择。 我完全同意在大多数情况下。 我问这个的原因是因为我想要做一些AS3代码生成,并反映在运行时内AS3类会比解析代码或者是行走产生的asdoc中介XML更容易。 我现在做的XML方法在Ruby中,但很想有一个清洁的解决方案!

Answer 1:

没了 - 不可能。 你能做的最好的是一个独立的应用程序(可以在Flash或Flash播放器的投影机版本进行,可从Adobe网站)。

为什么你会想 - Flash是因为伟大的GUI功能真棒。 有很多是在命令行更适合(Python或Ruby或上帝保佑,即使是Perl)其他编程语言



Answer 2:

是! 它实际上可能的。

您可以创建一个纯粹的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 ,但你不会看到任何UI,除非你创建NativeWindow对象。 如果你正在使用Flash Builder,只需创建一个新的AIR项目和主要的扩展名重命名.mxml文件.as (完成向导之前)。

这里更多的是ADL: 使用AIR调试启动器(ADL)

此外,这将是非常有用的: AIR应用程序的调用和终止

你可以把你所有的使用输出trace()写文件,甚至直接写入stdout,所看到这里 。



Answer 3:

显然存在的Tamarin项目,该项目旨在建立AS3的开源实现。 此页面提供了一个编译脚本AS3从一个命令行运行它的一个小细节。

我没有得到的狨猴是如何稳定是一个好主意,但它可能是你最好的选择现在。 在另一方面,我有@zenazn,你会过得更好的长期学习更适用于一般目的的语言非常同意,但如果真的想只使用ActionScript,不要让任何人阻止你:)



Answer 4:

有没有办法用裸SWF做到这一点现在。

但是,你可以发布您的Flash内容的AIR应用程序。 该应用程序然后可以从命令行调用,您可以从收集的论点论据的财产的InvokeEvent 。 其基本思路是这样的:

NativeApplication.nativeApplication.addEventListener( 
            InvokeEvent.INVOKE, onInvoke );
// ...
function onInvoke( e:InvokeEvent ) {
    var numArguments:int = e.arguments.length;
    // ...
}

但是请注意,这基本上是一个单行道。 你可以抓住的命令行参数,但是Flash仍然没有神交stdin和stdout的想法。



Answer 5:

其实,有一个项目,使其成为可能。 RedTamarin是扩展AS3项目(从技术上说,该项目的Tamarin这是Adobe / Mozilla浏览器的ECMAScript项目)有机会获得低级别的库(即POSIX)。 在目前的状态时,它似乎是好喜欢这正是它听起来就像你在找什么shell脚本,程序等的东西。

试试看:

http://code.google.com/p/redtamarin/



Answer 6:

您可以使用标准输入,标准输出互动和redtamarin标准错误

http://code.google.com/p/redtamarin/

见例子/文档这里

http://code.google.com/p/redtamarin/wiki/System#stdout

http://code.google.com/p/redtamarin/wiki/System#stderr

http://code.google.com/p/redtamarin/wiki/System#stdin

有Flash和ActionScript 3的Flash之间的差值运行时,AS3是一种语言

我不明白为什么AS3不会是一个很好的编程语言中的命令行和/或服务器端

现在,redtamarin就是这样,运行时,使您可以在命令行中运行你的AS3源代码。

此外,根据您的需要,你可以以不同的方式使用它

  1. 在命令行上运行脚本

    $ ./redshell myscript.as

  2. 在命令行中运行ABC或SWF文件

    $ ./redshell myscript.abc

    $ ./redshell myscript.swf

  3. 运行exectuable

    $ ./myscript

当你运行一个脚本AS3将动态解释,采用ASC你将能够编译相同的脚本,到也可以从命令行运行ABC文件。

例如,如果你需要装配无数ABC文件一起,你可以使用swfmake将它们合并为SWF文件运行时将在命令行中运行的SWF文件了。

最后,如果你需要在一个可执行捆绑一切,你可以使用createprojector把你的ABC或SWF文件,并与运行时本身进行合并,以获得一个独立的可执行文件。

Redtamarin提供原生API覆盖文件系统访问,插座,操作系统信息等。



Answer 7:

现在可以用AIR 2.0。 检查这篇文章开始。



Answer 8:

如果你是真的那么斜,你可以打开一个本地套接字,然后有一个辅助程序,在命令行与开放的SWF通讯运行。

这可能是学习另一种语言的好时机。 我建议的Java?



Answer 9:

我最近有一个类似的问题。 我花了几天来回答自己,但你可以创建一个.swf文件和完全从命令行执行它。

AS3文件系统的Hello World



Answer 10:

你可以看看HAXE有非常相似,AS3,并可能编译NekoVM字节码,它可以在命令行中运行。

同样有趣的可能是HippoHX ,它是一种框架创建桌面应用了Flash动画的。 (类似空气,但具有完全访问系统。)



文章来源: Is it possible to create a 'command line' swf?