2009-05-20 75 views
17

我有一個由兩個文件組成的小動作「項目」,稱它們爲foo.as和bar.as.由於我不會涉及的原因,我真的很想從命令行構建.SWF,而不需要設置任何形式的正式項目。我曾經使用過的每個編譯器都可以讓你做到這一點,但是對於我來說,我無法弄清楚如何強制MXMLC編譯這兩個文件並將它們鏈接到SWF。使用MXMLC從命令行編譯動作腳本

天真,我儘量

MXMLC foo.as bar.as

但我瞭解到,只有一個源文件是允許的。

好的,假設我分別編譯了這兩個文件,我怎樣才能將它們連接在一起以獲得最終的SWF?

注:我有兩個文件而不是一個文件的唯一原因是每個文件只有一個類的要求。我試圖把兩個類放在一個文件中,並且使其中一個類privateinternal,但這些想法都沒有奏效。我會欣喜若狂地發現,我可以把一個以上的課程放在一個文件中(只有一個是公開的)。

回答

23

這是一個兩部分問題,所以我會分別回答。

編譯兩類文件合併成一個SWF

MXMLC將automagiclly編譯它從入口點發現的所有類,你給它(主類)。它從您的導入語句和完整的類路徑定義中查找類。

這是一個非常好的guide for using MXMLC command line來編譯你的AS3項目。這篇文章有點過時了,但信息還是不錯的。他詳細介紹了使用命令行編譯器時需要了解的內容,包括MXMLC選項,編寫BAT腳本以及一些關於AS3的內容,如果您知道自己在做什麼,那麼您可能會跳過這些內容。

在文件

AS3可以讓你有每個文件一類,加上儘可能多「幫手」類,只要你喜歡有一個以上的類。它不支持像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(); 
} 
2

如果主文件/類需要/使用另一個文件的類,另一個文件也將被編譯到swf中。

2

正如Hippo所說,編譯器會自動編譯成SWF所有通過代碼使用的類,它是默認遞歸的。

您也可以閱讀所有的options the MXMLC compiler has

0

如果你有興趣在自動化這個過程中,你也可以使用Project Sprouts其中包括相當多的比你要求 - 但是給你踢小康建設的能力並從終端進行測試運行。

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. 
    }, 
    }, 
})