如何在Flex CSS文件中使用常量

时间:2010-02-18 20:55:20

标签: css flex

如何在Flex应用程序中使用常量,我可以在Flex CSS文件中的多个位置应用它?例如,我可能在几个UI组件中具有相同的背景颜色,然后我希望仅在一个地方设置此颜色并在所有样式子句中重复使用。有点像...

public static const myColor = "#00FF00"

...

component1 
{
  backgroundColor: myColor
}

component2 {
  backgroundColor: myColor
}

2 个答案:

答案 0 :(得分:3)

这就是我使用的。查看StylesheetMixin class on Snipplr

这就是它在使用中的样子:

<强> ColorPalette

package
{
    // only make bindable if you want to use in skins
    // for example like color="{ColorPalette.crazyColor}"
    [Bindable]
    /**
     *  This class holds all of your global colors to apply to skins.
     */
    public class ColorPalette
    {
        // "var", not "const", so you can optionally change them at runtime
        public static var crazyColor:uint = 0xff0000;
        public static const applicationAccent:uint = 0x1a01dd;
    }   
}

<强>样式表

@namespace mx "library://ns.adobe.com/flex/mx";
@namespace s "library://ns.adobe.com/flex/spark";
@namespace tlf "library://ns.adobe.com/flashx/textLayout";

mx|Panel
{
    color: crazyColor;
    backgroundColor: applicationAccent;
}
mx|Button
{
    color: crazyColor;
    backgroundColor: applicationAccent;
}

Flex 3等价物:

Panel
{
    color: crazyColor;
    backgroundColor: applicationAccent;
}
Button
{
    color: crazyColor;
    backgroundColor: applicationAccent;
}   

示例应用

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:local="*">

    <mx:Script>
        <![CDATA[
            import ColorPalette;
        ]]>
    </mx:Script>

    <!-- simple css -->
    <mx:Style source="main.css"/>

    <!-- stylesheet palette -->
    <local:StylesheetMixin palettes="{[ColorPalette]}"/>

    <!-- sample container -->
    <mx:Panel id="panel" width="100%" height="100%" title="Stylesheet Palettes!">
        <mx:Button label="Button"/>
    </mx:Panel>

</mx:Application>  

我有调色板:

  • 颜色
  • 资产
  • 效果
  • 布局

适用于Flex 3和4。

答案 1 :(得分:0)

是的,那不是很好吗?我们无法在本地找到这样做。我们尝试过评论颜色,例如:

background-color:/**mainBGColor**/#FFFFFF/*mainBGColor*/;

然后进行GREP替换,但这并不是很令人满意。

一个非常好的问题。 Adobe,你在听吗?