編輯:此解決方案不起作用。從解析器中取出的所有選擇器都將轉換爲小寫形式。這可能適用於你的應用程序,但它可能不會...
我在這裏留下這個答案,因爲它可能會幫助一些人尋找解決方案,並警告其他人的這種方法的侷限性。
見我的問題:「Looking for CSS parser written in AS3」一個完整的討論,但我發現了一個CSS解析隱藏在標準庫裏面。這裏是你如何使用它:
public function extractFromStyleSheet(css:String):void {
// Create a StyleSheet Object
var styleSheet:StyleSheet = new StyleSheet();
styleSheet.parseCSS(css);
// Iterate through the selector objects
var selectorNames:Array = styleSheet.styleNames;
for(var i:int=0; i<selectorNames.length; i++){
// Do something with each selector
trace("Selector: "+selelectorNames[i];
var properties:Object = styleSheet.getStyle(selectorNames[i]);
for (var property:String in properties){
// Do something with each property in the selector
trace("\t"+property+" -> "+properties[property]+"\n");
}
}
}
可以使用,然後應用樣式:
cssStyle = new CSSStyleDeclaration();
cssStyle.setStyle("color", "<valid color>);
FlexGlobals.topLevelApplication.styleManager.setStyleDeclaration("Button", cssStyle, true);
這個工作很適合我 - 而不是使用parseCSS我結束瞭解析字符串自己並設置每個屬性使用:StyleManager.getStyleDeclaration(「Component」)。setStyle(「property」,value); 一種黑客,但哦... – onekidney 2009-04-06 18:22:40