2012-09-20 39 views
0

我想讓幾個Flex(SDK 4.6)應用程序共享相同的樣式表(存儲在CSS文件中)。不過,我不想將這些獨立文件分發到這些應用程序的SWF中,而是想將CSS文件嵌入到Flex應用程序文件中(就像嵌入圖像等一樣)。 CSS聲明包括字體嵌入,所以它(我認爲)不可能在運行時加載CSS。在Flex的swf文件中嵌入外部CSS

我已經找到了:

  1. 我不能簡單地用<fx:Script source="@Embed(stylesheet.css)" />。錯誤的語法。

  2. 我不能在應用程序之間共享的某些MXML組件中使用內聯樣式表,因爲CSS包含組件中不允許的類型聲明。

  3. 我可以選擇編譯CSS的SWF但是這創造了獨立的SWF文件(這樣我就可以嵌入Flex框架成SWF,但不是一個獨立的CSS])。

我希望我失去了一些明顯的東西,這很容易實現。

回答

2
  • 你的其他項目的構建路徑
  • 您現在可以使用上創建一個庫項目(生產SWC文件)
  • 添加樣式表作爲將這個項目的資源
  • (或編譯的SWC)從您的其他項目中此資源:
    <fx:Style source="stylesheet.css" />

作爲例子
在librabry項目,你有src/stylesheet.css
如果src是源文件夾,該文件會自動打包成庫
如果不是的話,你就必須手動添加文件:在FlashBuilder這可以通過完成編輯Build pathAssets選項卡。在命令行中,將其添加爲-include-file選項。

一種替代使用SWC爲庫依賴性,是將其定義爲一個主題依賴性。在FlashBuilder中,項目屬性中有一個Theme嚮導。在命令行中執行:

mxmlc -theme="/path/to/my/theme.swc" MyApp.mxml 

如果你使用它作爲一個主題,你甚至不必須包括在應用程序中fx:Style標籤。 CSS默認包含在內。但我認爲它被命名爲defaults.css

+0

這使我困擾:爲什麼CSS文件自動包含在「庫」項目(SWC)中而不是「應用程序」項目(SWF)中?任何想法? :] –

+0

'.swf'是一個包含所有編譯字節碼的文件(有點像Java'.class'文件)。另一方面'.swc'只不過是一個檔案文件(如'.zip'或Java'.jar'文件),它包含'.swf'和庫的字節碼,以及其他任何你想要的文件添加到它,就像一個CSS文件。因此,它的本質就是'。swf'不能包含其他文件,並且CSS是一種解釋型語言,無法編譯(因此無法編譯到swf中)。 – RIAstar

+0

但是'.swf'不能包含CSS文件,就像它可以包含圖像文件一樣?如果你將'.swc'鏈接到最終的'.swf',那麼這個最終的'.swf'有效地包含原始的CSS,不是嗎? :] –