Flex 動態改變介面CSS問題

2021-05-24 00:55:49 字數 1306 閱讀 8809

flex sdk 提供了動態載入css,並更新介面skin的功能。具體應用:

1、將css檔案編譯成swf檔案。(選擇css檔案右鍵選單選擇-compile css to swf即可)

2、stylemanager.loadstyledeclarations("css.swf",true);

實現很簡單,但是有很大侷限性,本人認為基本上沒有用,是不可選擇的解決方案。

因為該方法對於大的應用程式(即介面中包含很多元件時)很不實用,使用者需要等很長的時間樣式才能更新,只有當介面只有很少的元件時才能及時更新。

stylemanager.loadstyledeclarations的工作原理應該是載入css後,遍歷介面中的每個元件,再分析元件所應用的樣式,再將樣式更新到元件上。可想而知這個過程會消耗系統多長的時間。

如果按這個思路來解決動態更新skin的話,我們也可以自己實現,並且根據專案的需要,有選擇性地更新元件樣式,也許會提高更新skin的效能。關鍵**如下:

loadcss.cs

//load css file

var urlloader:urlloader= new urlloader();

urlloader.addeventlistener(event.complete, urlloader_complete);

urlloader.load(new urlrequest("css file name"));

//urlloader_complete

//將css檔案內容轉換為xml資料(你也可能轉換為陣列,總之是為後面應用做準備的資料集合)

var stylesheet:xml=;

var style:xml;

var styles:array = csstext.split('}');//csstext 為css的內容,純文字

styles.splice(styles.length-1, 1);

for (var i:int=0; i

//樣式的應用

//其實動態應用css的瓶頸問題就在這裡,即如何將樣式以更高的效能應用到所有元件上。

方案一.stylemanager.getstyledeclaration(stylename).setstyle("styleproperty","stylevalue");

缺陷:如果元件多,應用程式會掛掉。

方案二、uiobject.setstyle("styleproperty","stylevalue")

缺陷:編碼不靈活,也會增加編碼量。需要有乙個介面元件的集合,遍歷元件並應用樣式。

目前我選擇了第二種方案,感覺不是很好。但也沒有辦法,目前仍在苦苦尋找解決辦法!

在flex中使用CSS改變控制項樣式

昨天在搞乙個對話方塊的外觀 使用css搞定 http www.riashanghai.com node 7這篇文章對我幫助很大 心得寫一下,自己留著好看 需要乙個css檔案,例如default.css 在mxml中需要使用 進行 對控制項進行繫結 例如 控制項 mybutton 需要在default...

動態改變頁面的CSS樣式

在asp.net中,有的時候要動態變換css,比如有的時候做個性化頁面,可以這樣做 之後,在要更換css的頁面中,使用如下 sub page load sender as object,e as eventargs if not ispostback mystylesheet.attributes....

動態改變頁面的CSS樣式

在asp.net中,有的時候要動態變換css,比如有的時候做個性化頁面,可以這樣做 之後,在要更換css的頁面中,使用如下 sub page load sender as object,e as eventargs if not ispostback mystylesheet.attributes....