Как иметь константы в файлах Flex CSS - PullRequest
2 голосов
/ 18 февраля 2010

Как получить константу в приложении Flex, которую можно применить в нескольких местах в файле Flex CSS? Например, у меня может быть цвет фона, который является одинаковым в нескольких компонентах пользовательского интерфейса, и тогда я хотел бы, чтобы этот цвет был установлен только в одном месте и повторно использовался во всех пунктах стиля. Что-то вроде ...

public static const myColor = "#00FF00"

...

component1 
{
  backgroundColor: myColor
}

component2 {
  backgroundColor: myColor
}

Ответы [ 2 ]

3 голосов
/ 19 февраля 2010

Это то, что я использую. Проверьте класс StylesheetMixin на 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.

0 голосов
/ 19 февраля 2010

Да, разве это не было бы хорошо? Мы не нашли способа сделать это изначально. Мы пробовали комментировать цвета, например:

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

и затем выполнял замену GREP, но это не было очень удовлетворительным.

Очень хороший вопрос. Adobe, ты слушаешь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...