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

t9eec4r0  于 2022-11-01  发布在  Apache
关注(0)|答案(2)|浏览(122)

如何在Flex应用程序中设置一个常量,并将其应用于Flex CSS文件中的多个位置?例如,我可能有一个背景颜色,该颜色在多个UI组件中都是相同的,然后我希望仅在一个位置设置此颜色,并在所有样式子句中重用。类似于...

public static const myColor = "#00FF00"

...

component1 
{
  backgroundColor: myColor
}

component2 {
  backgroundColor: myColor
}
dsekswqp

dsekswqp1#

这是我用的,看看StylesheetMixin class on Snipplr
这是它在使用中的样子:

调色板

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搭配使用。

6tr1vspr

6tr1vspr2#

是的,那不是很好吗?我们还没有找到原生的方法。我们试着对颜色进行注解,比如:

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

然后进行GREP替换,但这并不是很令人满意。
问得好Adobe你在听吗

相关问题