[英]Selecting css file dynamically by clicking on the button in FLEX 3
我需要創建一個應用程序,在該應用程序中,我們根據按鈕單擊更改應用程序主題的應用程序樣式。
我已經下載了包含不同CSS文件的主題。 我需要為應用程序動態聲明CSS以應用該主題。
我有文件名Theme1.css,Theme2.css,Theme3.css,Theme4.css,Theme5.css。
當我點擊主題1按鈕然后我需要應用Theme1.css文件作為樣式的來源。 類似,當我單擊“主題2”按鈕時,我需要應用Theme2.css文件作為樣式源。
注意:css文件包含應用程序和應用程序組件的樣式。
祝你今天愉快....
我認為你必須逐個循環所有控件並在控件上設置主題。 例如 如果您將默認主題設置為RED並且按鈕為紅色,則將主題更改為藍色,然后使用循環控件將按鈕顏色設置為藍色。 可能對您有幫助...。
請問我你是否明白我的意思...
謝謝。
您必須使用eclipse / flex builder中的工具將CSS編譯為SWF,以便可以在運行時更改樣式。
您還必須維護當前主題ID的實例變量。
這是你想要的?
public function switchTheme(theme:int):void {
StyleManager.unloadStyleDeclarations("assets/styles/Theme"+currentTheme+".swf");
StyleManager.loadStyleDeclarations("assets/styles/Theme"+theme+".swf");
this.currentTheme = theme;
}
然后,您可以將每個按鈕的單擊處理程序分配給switchTheme函數-傳遞主題ID作為參數。
您需要將CSS文件編譯為SWF。 您可以在Flash Builder的資源管理器窗口中右鍵單擊CSS文件,然后從菜單中選擇“將CSS編譯為SWF”。
然后,使用StyleManager
的loadStyleDeclarations()
方法將CSS信息加載到SWF文件中。
上一步只會將新樣式添加到樣式子系統。 如果要清除舊樣式,則首先需要unloadStyleDeclarations()
方法。
如果卸載當前活動的CSS聲明,請使用false
作為第二個參數,以便StyleManager
不會使樣式無效並重建舞台上組件的樣式聲明鏈/緩存。 這不僅速度慢,而且在應用新樣式之前還會使用默認樣式刷新屏幕。
您可能會有類似的情況,並且每當您要更改主題時,都使用適當的URL調用applyTheme('url/to/theme.swf')
:
private var currentThemeURL:String = 'themes/default.swf';
public function applyTheme(themeURL:String):void
{
StyleManager.unloadStyleDeclarations(currentThemeURL, false);
StyleManager.loadStyleDeclarations(themeURL);
currentTheme = themeURL;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.