2010-02-17 44 views
4

我正在編譯我的css文件到swf文件並在運行時加載它們。我沒有問題編譯這些和大部分時間使用ClassReference語句:定義無法找到錯誤編譯CSS文件中的ClassReference到SWF文件

.miniCashLadderGridStyle 
{ 
    color : #2a2a2a; 
    backgroundAlpha : 0; 
    borderSkin : ClassReference("mx.skins.ProgrammaticSkin"); 
    headerSortSeparatorSkin : ClassReference("mx.skins.ProgrammaticSkin"); 
    horizontalSeparatorSkin : ClassReference("company.assets.GridHorzDivLine"); 
    verticalSeparatorSkin : ClassReference("company.assets.GridVertDivLine"); 
} 

這工作正常。資產來自一個單獨的SWC,但是這個:

header-background-skin : ClassReference("company.view.grid.skin.HeaderBackground"); 

不起作用。不同之處在於HeaderBackground是與css文件在同一個項目中的類。如果我將樣式移到我的mxml文件中,那麼compiel會很好。

我不知道編譯css fiels時是否使用了不同的源代碼路徑。

這是FlashBuilder 4構建269271 SDK 13963

+0

錯誤在這裏提交:https://bugs.adobe.com/jira/browse/FB-26030 – Roaders

回答

0

這可能會幫助:

Flex支持外部CSS樣式表。要將樣式表應用於當前文檔及其子文檔,請使用標籤的source屬性。外部樣式表文件應位於包含MXML源文件的文件夾中。默認情況下,這是MXML項目中的src文件夾。

注意:您應該嘗試限制應用程序中使用的樣式表的數量,並僅在應用程序中的頂級文檔(包含該標籤的文檔)中設置樣式表。如果您在子文檔中設置樣式表,則可能會出現意外的結果。

以下示例在名爲external.css的外部CSS文件中定義了兩個CSS類選擇器。通過在標記的source屬性中指定其路徑和文件名,您可以在Flex應用程序中使用外部CSS文件。 例子: 外部CSS文件

/* An external CSS file */ 
.solidBorder 
{ 
    borderStyle: "solid"; 
} 

.solidBorderPaddedVertically 
{ 
    borderStyle: "solid"; 
    paddingTop: 12px; 
    paddingBottom: 12px; 
} 

MXML文件

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    width="150" height="140" 
    viewSourceURL="src/StylesExternal/index.html" 

> 
    <mx:Style source="styles/external.css" /> 

    <mx:VBox styleName="solidBorder"> 

     <mx:Button label="Submit"/> 
    </mx:VBox> 

    <mx:VBox styleName="solidBorderPaddedVertically"> 
     <mx:Button label="Submit"/> 
    </mx:VBox> 

</mx:Application> 
+0

這可能會工作,但會編譯樣式到SWF。我們將css文件編譯成它們自己的swf文件並在運行時加載它們。它正在編譯導致問題的這個樣式模塊。 – Roaders

1

的問題是,當你編寫CSS中的Flex/Flash Builder中的SWF,它在運行時項目的構建路徑mxmlc的,所以源對編譯器不可見。 The old bug filed 2 years ago

解決方法是將所需的軟件包放置到CSS所在的同一文件夾(即使符號鏈接足夠)。編譯器會看到文件&將它們編譯爲適當的類。

0

編譯CSS時,在編譯器的library-path參數中提供模塊的swf,他會看到這個類。

0

嘗試在FlashBuilder 4的包資源管理器中右鍵單擊CSS,然後將CSS編譯爲SWF。這似乎解決了我的問題。

2

解決方案,因爲你提到的皮膚類尚未編譯到應用程序,如果你不能在其他地方使用它,所以沒有發現運行時類的錯誤會發生,當樣式SWF被應用。通過避免這個錯誤,你可以強制將皮膚類編譯到應用程序中。例如:

<s:Application> 
    import company.view.grid.skin.HeaderBackground; 
    private var referrenceEnforcer:Array = [HeaderBackground]; 
</s:Application> 
相關問題