我需要
load and apply CSS at runtime in my Flex app.我知道adobe docs说你需要到
compile the CSS before loading it,但我想找到一个解决方法.
我知道你可以设置这样的个人风格:
cssStyle = new CSSStyleDeclaration();
cssStyle.setStyle("color", "<valid color>);
FlexGlobals.topLevelApplication.styleManager.setStyleDeclaration("Button", cssStyle, true);
我打算解析一个CSS文件并按上面的方式应用每个属性.
我想知道是否:
> Adobe有一个我可以使用的CSS解析器库
>其他人有一个我可以使用的CSS解析器
>如果我编写自己的CSS解析器,我应该注意什么
我知道adobe flex.text.StyleSheet类有一个CSS解析器,但我找不到一种方法来利用它. (有没有办法获得源代码?)
最佳答案 编辑:此解决方案不起作用.从解析器中取出的所有选择器都将转换为小写.这可能适用于您的应用程序,但它可能不会……
我在这里留下这个答案,因为它可以帮助一些人寻找解决方案,并警告其他人这种方法的局限性.
虽然它不是为此而设计的,但可以使用StyleSheet类来解析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");
}
}
}