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

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

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

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

спасибо!

1009 * Фреда *

Ответы [ 2 ]

0 голосов
/ 29 июня 2010

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

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

удачи

0 голосов
/ 28 июня 2010

Я бы определил набор имен стилей в 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>
...