簡體   English   中英

單擊FLEX 3中的按鈕動態選擇css文件

[英]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”。

然后,使用StyleManagerloadStyleDeclarations()方法將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM