Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как хранить стили линий и заливок (http://www.flasher.ru/forum/showthread.php?t=194869)

Guitariz 23.02.2013 22:11

Как хранить стили линий и заливок
 
Прошу прощения за нубский вопрос, но пытаюсь сохранить стили линий и заливок, вариант сохранить в Graphics, но тогда непонятно, как оттуда извлечь...

caseyryan 23.02.2013 23:00

Что мешает написать класс, в котором будут все необходимые свойства, и хранить его экземпляры для нужных объектов?
например
Код AS3:

package {
    public class GraphicStyle {
          public var lineColor:uint = 0;
          public var fillColr:uint = 0;
    }
}

Сохранять куда-то эти экземпляры, а потом оттуда вытаскивать нужные свойства

Wolsh 23.02.2013 23:02

Есть же имплементаторы IGraphicsData, например параметры простой заливки можно хранить в GraphicsSolidFill — не подходит? Опишите задачу, откуда хранить, где/куда хранить, чем и для чего восстанавливать.

Guitariz 24.02.2013 08:58

Задача – динамическая отрисовка объектов (кнопки, поля вывода, спидбаттоны и пр.) в соотвтствиии со списком стилей, хранящихся в отдельном пэкэдже

Wolsh 24.02.2013 10:35

Хранить данные в виде классов как-то странновато — обычно используют текстовые файлы, xml или css, которые можно загружать извне и парсить налету в рантайме — но вобщем то можно и так, например класс-список констант. Если все элементы GUI используют общий набор цветов, можно дать им имена в таком классе-списке, а все элементы будут его импортировать. Не самое элегантное решение.
Код AS3:

package ***.styles 
{
        import flash.filters.DropShadowFilter;
        public class Style
        {
                /*    FILTERS    */
                public static const SHADOW_FILTER:DropShadowFilter = new DropShadowFilter(2, 90, SHAD, .5, 0, 4, .8, 3);
                public static const LABEL_FILTER :DropShadowFilter = new DropShadowFilter(1, 60, BLICK, .8, 0, 0, 1, 1);
                public static const DRAG_FILTER  :DropShadowFilter = new DropShadowFilter(2, 60, SHAD, 1, 4, 4, 1, 3);
                /* DEFAULT STATE */
                public static const BLICK        :uint = 0xffffff;
                public static const HILIGHT        :uint = 0xefefef;
                public static const LIGHT        :uint = 0xdddddd;
                public static const MIDDLE        :uint = 0xcccccc;
                public static const TONE        :uint = 0xaaaaaa;
                public static const DARK        :uint = 0x888888;
                public static const SHAD        :uint = 0x666666;
        }
}

а в самих контролах при отрисовке используете эти константы, то есть ссылаетесь на этот класс стилей, типа upState.graphics.beginFill(Style.TONE);
Соответственно все стили будут собраны в одном месте, где их можно легко редактировать сразу для всех элементов. Решение не самое гибкое, но простое и надежное.

Guitariz 24.02.2013 14:59

Спасибо, именно это и подразумевалось. В целом согласен, с изменением стилей теперь заморочка, но в общем то в рамках этого приложения это и не требуется


Часовой пояс GMT +4, время: 19:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.