使用 MXMLC 从命令行编译动作脚本

Posted

技术标签:

【中文标题】使用 MXMLC 从命令行编译动作脚本【英文标题】:compiling actionscript from command line using MXMLC 【发布时间】:2010-10-27 12:42:50 【问题描述】:

我有一个由两个文件组成的小动作脚本“项目”,分别称为 foo.as 和 bar.as。由于我不会详细介绍的原因,我真的很想从命令行构建 .SWF,而不是建立任何形式的正式项目。我曾经使用过的每个编译器都可以让你这样做,但对于我来说,我无法弄清楚如何强制 MXMLC 编译这两个文件并将它们链接到 SWF。

天真地,我试试

MXMLC foo.as bar.as

但我被告知只允许一个源文件。

好的,假设我分别编译这两个文件,我将如何将它们链接在一起以获得最终的 SWF?

注意:我有两个文件而不是一个文件的唯一原因是每个文件只需要一个类。我尝试将这两个类放在一个文件中并制作其中一个类privateinternal,但这些想法都不起作用。我会欣喜若狂地发现我可以在一个文件中放置多个类(只有一个是公开的)。

【问题讨论】:

【参考方案1】:

这是一个两部分的问题,所以我将分别回答。

将两个类文件编译成一个SWF

MXMLC 会自动编译从你给它的入口点找到的所有类(你的主类)。它会从您的 import 语句和完整的类路径定义中找到类。

这是一个非常好的guide for using MXMLC command line 来编译您的 AS3 项目。这篇文章有点过时了,但信息仍然很好。他详细介绍了您在使用命令行编译器时需要了解的内容,包括 MXMLC 选项、编写 BAT 脚本以及一些关于 AS3 的内容,如果您知道自己在做什么,您可能会跳过这些内容。

一个文件中有多个类

AS3 允许您为每个文件创建一个类,以及任意数量的“帮助”类。它不支持像 Java 那样的受保护和私有类。助手类只在它们定义的文件中可见。

Helper 类位于包声明之外(这对我来说有点奇怪)。这是一个例子:

package com.mynamespace

     public class Foo 
     
          private var _fooHelper:FooHelper = new FooHelper();
     


// helper class imports also go outside the package.
import com.example.xml.SaxHandler;
class FooHelper

     private var bar:Number = Math.random();

【讨论】:

【参考方案2】:

如果主文件/类需要/使用其他文件的类,其他文件也会被编译成swf。

【讨论】:

【参考方案3】:

正如 Hippo 所说,编译器会自动将通过您的代码使用的所有类编译成 SWF,默认情况下它是递归的。

您还可以阅读所有options the MXMLC compiler has。

【讨论】:

【参考方案4】:

如果您对自动化该过程感兴趣,您还可以使用Project Sprouts,它包含的内容比您要求的要多得多 - 但确实让您能够从终端启动构建和测试运行。

【讨论】:

【参考方案5】:

如果你使用grunt作为任务管理器(用于js),你可以使用这个插件:

https://github.com/JamesMGreene/grunt-mxmlc

您设置配置选项,然后从命令行运行它:

grunt.initConfig(
  mxmlc: 
    options: 
      // Task-specific options go here.
    ,
    your_target: 
      // Target-specific file lists and/or options go here.
    ,
  ,
)

【讨论】:

以上是关于使用 MXMLC 从命令行编译动作脚本的主要内容,如果未能解决你的问题,请参考以下文章

如果从命令行运行 Julia 脚本,是不是每次都需要重新编译?

如何从命令行编译 Visual Studio 项目?

为啥从命令行编译而不是从 IDE 编译时会出现歧义错误?

Visual Studio 2019:使用 vcvars64.bat 从命令行构建 C++ 不再起作用

java使用纯命令行打包项目

delphi10.2 命令行编译x64脚本