我有各種通過編程皮膚皮膚的組件。皮膚類引用一個單獨的類,該類包含各種顏色以應用於組件的不同方面。 singleton類的默認顏色設置爲黑/灰等變化。我從XML文件加載自定義顏色,然後加載到單例中。我通過包含在主應用程序mxml中的css樣式表應用自定義皮膚。有沒有辦法在ActionScript中以編程方式添加Flex皮膚?
問題是,當swf最初加載時,屏幕上繪製的組件是黑色的,並且不反映從XML文件加載的顏色更改。我有一些下拉窗口顯示按鈕點擊和下拉列表確實反映了XML文件中的正確顏色。因此,系統工作正常,但在XML加載並應用於單例之前,顯然會發生組件的初始繪製。
我的問題是,有沒有辦法通過調用構造函數以編程方式將皮膚應用於元素?
我有這個在我的CSS文件:
.PanControlsBackground {
borderSkin:ClassReference('skins.buttons.PanControlsBackground');
}
和我申請的類此:
_app.panControls.styleName = "PanControlsBackground";
有沒有辦法來調用:
_app.panControls.styleName = new PanControlsBackground();
或者有什麼影響?這樣,我可以刪除在css文件中加載的皮膚,並控制它們的實例化時間,以確保在顯示各種組件之前應用正確的顏色。
這使得既然,但它沒有爲我工作。我已經從CSS表中刪除了borderSkin並添加了以下代碼:'StyleManager.getStyleDeclaration(「。PanControlsBackground」)。setStyle(「borderSkin」,skins.buttons.PanControlsBackground);'這給了我一個「未定義的屬性」皮膚'「錯誤。所以然後我嘗試在一個ClassReference中包裝皮膚(就像在樣式表中一樣),但那也不起作用。 – swatkins
@swatkins - 嘗試向腳本塊添加一條導入語句。例如'import skins.buttons.PanControlsBackground;' – merv
我實際上已經把CSS表單移動到加載可見控件的內部模塊 - 這延遲了皮膚的實例化,以便應用正確的顏色。出於好奇,我嘗試了你的方法,它似乎已經奏效。非常感謝@merv! – swatkins