2012-11-01 31 views
1

使用編譯器恆定我想使用一個編譯器常量來修改某些嵌入式文件的路徑,這對於不同的項目(其共用相同的源代碼)不同AS3/FlashDevelop中 - 在嵌入

IE中。轉換此:

[Embed(source ='mypath/myfile.png')] public static const myimage:Class;

成類似:

[嵌入(源= CONFIG :: gfx_path + 'myfile.png')]公共靜態常量MYIMAGE:類;

其中CONFIG :: gfx_path是 'mypath中/'

問題是不進行編譯(錯誤:無效元數據)。事實上,你甚至不能這樣做:「mypath /」+「myfile.png」,因爲它會給出同樣的錯誤。

謝謝!

+0

完成此操作時有問題嗎?有什麼問題? – JeffryHouser

+0

嗨。問題是不編譯它(錯誤:無效的元數據)。事實上,你甚至不能這樣做:「mypath /」+「myfile.png」,因爲它會給出同樣的錯誤。 – Cristian

+1

也許有條件的編譯不是要走的路。設置不同的資產目錄並將其添加到你的源路徑,你需要四個你的構建。這可以通過ANT或Maven完成,或者您只是爲不同的編譯使用不同的配置文件。 –

回答

0

您不能在嵌入標記(或任何元數據)中使用可執行代碼。

Embed元數據標記(以及其他各種特定的代碼類型)在編譯時執行。涉及變量/方法的正常代碼在運行時執行。如果你不知道其中的差別,編譯時間代碼將在您構建項目時執行,並且實際上是構建的一部分。運行時間在應用程序運行時執行。

您不能在編譯時執行運行時代碼,反之亦然。必須在編譯時明確定義所有嵌入才能成功。這可能很痛苦,但應用程序必須知道在編譯之前要嵌入。這就是嵌入的重點。

+0

它可以在元數據中使用編譯器常量(我試過,它的工作原理),所以我希望有一些技巧,讓他們被添加到字符串。它不是運行時間碼。只是一個將2個常量轉換爲1的技巧。編譯前應該可行。 – Cristian

+0

您可以使用Loader加載資產?這將允許您將字符串與常量組合在一起。 – xLite

+0

@xLite他們必須被嵌入到swf中 – Cristian