18

foo.as と bar.as という 2 つのファイルで構成される小さなアクション スクリプト「プロジェクト」があります。詳細は省きますが、正式なプロジェクトをセットアップせずに、コマンド ラインから .SWF をビルドしたいと考えています。私がこれまでに使用したすべてのコンパイラでこれを行うことができますが、私の人生では、MXMLC を強制してこれら 2 つのファイルをコンパイルし、それらを SWF にリンクする方法がわかりません。

素朴に、私は試します

MXMLC foo.as bar.as

ただし、許可されるソース ファイルは 1 つだけであるとのことです。

さて、これら 2 つのファイルを別々にコンパイルしたとしたら、これらをリンクして最終的な SWF を取得するにはどうすればよいでしょうか。

注: ファイルが 1 つではなく 2 つある唯一の理由は、ファイルごとに 1 つのクラスしか必要としないためです。両方のクラスを 1 つのファイルに入れ、いずれprivateかのクラスを作成しようとしましinternalたが、これらのアイデアはどちらも機能しませんでした。ファイルに複数のクラスを入れることができることを知りたいと思います (1 つだけが公開されています)。

4

5 に答える 5

23

これは 2 つの部分からなる質問なので、両方に分けて回答します。

2 つのクラス ファイルを 1 つの SWF にコンパイルする

MXMLC は、指定したエントリ ポイント (メイン クラス) から検出したすべてのクラスを自動的にコンパイルします。import ステートメントと完全なクラスパス定義からクラスを見つけます。

これは、 MXMLC コマンド ラインを使用して AS3 プロジェクトをコンパイルするための非常に優れたガイドです。記事は少し古いですが、情報はまだ良いです。MXMLC オプション、BAT スクリプトの記述、AS3 についてなど、コマンド ライン コンパイラを使用する際に知っておくべきことについて詳しく説明しています。

ファイルに複数のクラスがある

AS3 では、ファイルごとに 1 つのクラスと、好きなだけの「ヘルパー」クラスを使用できます。Java のような保護されたプライベート クラスはサポートされません。ヘルパー クラスは、定義されているファイルでのみ表示されます。

ヘルパー クラスは、パッケージ宣言の外側に配置されます (これは私には少し奇妙です)。次に例を示します。

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();
}
于 2009-05-20T21:02:39.787 に答える
2

Hippoが言うように、コンパイラーはコードで使用されるすべてのクラスを自動的にSWFにコンパイルします。デフォルトでは再帰的です。

MXMLCコンパイラが持つすべてのオプションも読むことができます。

于 2009-05-20T12:46:19.927 に答える
2

メイン ファイル/クラスが他のファイルのクラスを必要とする/使用する場合、他のファイルも swf にコンパイルされます。

于 2009-05-20T11:29:11.393 に答える
0

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.
    },
  },
})
于 2014-03-13T03:06:51.767 に答える
0

そのプロセスの自動化に興味がある場合は、Project Sproutsを使用することもできます。これには、求めているよりもかなり多くの機能が含まれていますが、ビルドを開始してターミナルから実行をテストすることができます。

于 2009-07-05T19:31:23.820 に答える