Оптимальный способ дать пользователю возможность выбирать стиль во время выполнения - Flex

Что я пытаюсь сделать: позволить пользователю выбирать цветовую палитру для настраиваемого компонента, выбирая из раскрывающегося меню с различными значками.

У меня есть раскрывающееся меню, но я пытаюсь понять, как лучше всего обрабатывать различные стили в моем коде. В идеале мне хотелось бы иметь возможность загружать стили во время выполнения, но я не вижу в этом большого преимущества, поэтому сейчас я думаю о компиляции во всех стилях. Тем не менее, я не могу найти достойного способа структурировать код. Взломать это кажется довольно простым / быстрым, но есть способ лучше, чем иметь большой массив значений, который можно проиндексировать через какой-то индекс, связанный с каждым значком - фу!

Хотел бы услышать ваши мысли или увидеть какие-либо указания на очевидные способы справиться с этим.

Спасибо!

Фред


person fred august    schedule 28.06.2010    source источник


Ответы (2)


Я бы определил набор имен стилей в CSS, затем вы можете использовать коллекцию имен стилей для предоставления значений для элемента управления селектором стилей, например:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Style>
        .style1{color:red;}
        .style2{color:green;}
        .style3{color:blue;}
    </mx:Style>
    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            public static const styleNames:ArrayCollection = 
                    new ArrayCollection(['style1', 'style2', 'style3']);
        ]]>
    </mx:Script>
    <mx:ComboBox 
        id="styleCombo" 
        styleName="{styleCombo.value}" 
        dataProvider="{styleNames}" 
    />
</mx:Application>
person Ryan Lynch    schedule 28.06.2010

Оптимальный способ добиться этого - скомпилировать несколько файлов CSS + Swf (активы) и затем загрузить их во время выполнения в соответствии с тем, что выбрал пользователь.

Это, безусловно, лучшая практика, я использовал ее для больших и малых приложений, и она стоит выше всех других решений, которые я мог придумать.

удачи

person KensoDev    schedule 29.06.2010