flex – 寻找用AS3编写的CSS解析器

我需要
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文件并按上面的方式应用每个属性.

我想知道是否:

> Adob​​e有一个我可以使用的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");
        }
    }
}
点赞