PDA

Просмотр полной версии : Определить цвет клипа на сцене/в библиотеке


danhuu
01.08.2007, 12:42
Возможно ли это? Все варианты, которые мне попадались, требуют рисовать/копировать BitmapData. А у меня ситуация такая: есть политическая карта, где каждая страна - клип, сделанный вручную (такую дали). Изначально все они окрашены в песочный цвет. При нажатии мышом на пункт легенды группа стран с одинаковым параметром (напр., население >10000000) должна окрашиваться в соотв. цвет. При вторичном нажатии песочный цвет должен восстановиться. Написал класс Area, где экземпляр, в частности, содержит ссылку на клип, изначальный цвет, текущий цвет и объект с данными по территории. Окрасить - не проблема, а для возвращения цвета пока приходится свойство initColor (изначальный цвет) вручную прописывать, определив на сцене пипеткой.
Извиняюсь, если неправильно определил раздел, возможно, это для начинающих.

etc
01.08.2007, 12:50
Чем плох BitmapData? И разве дефолтный цвет меняется?

iNils
01.08.2007, 12:56
setRGB и setTransform вполне подойдут

danhuu
01.08.2007, 13:47
Чем плох BitmapData? И разве дефолтный цвет меняется?
BitmapData плох тем, что для всех стран (а их около 300) придётся из каждого мувика выдирать векторный Shape и превращать в BitmapData, чтобы с ним работать. И весить, подозреваю, будет это немало. Или я чего-то не так понял? Дефолтный цвет меняется, если, напр., дадут другую карту. Или сам из ArcGIS экспортирую в AI, Флэш, вроде его принимает. Хочется сделать боль-мень универсальный класс.
setRGB и setTransform вполне подойдут
Для определения цвета клипа?!!! Не надо так зло шутить.

iNils
01.08.2007, 13:52
А зачем определять цвет клипа? Из первого поста следует, что все клипы изначально одного цвета (песочного). Когда тыкаем в клип, он меняет цвет исходя из условия легенды, тогда каким образом вам поможет определение цвета, когда они все одинаковы изначально? Значит у вас должен быть массив соответствия, такой-то клип, такой то значение. Либо я не так что-то понял, либо вы не верно изложили суть.

Wolsh
01.08.2007, 14:02
Для определения цвета клипа?!!! Не надо так зло шутить.
Интересно, а для чего же они по-вашему? setRGB - getRGB, setTransform - getTransform...
Да и зачем вам определять, если вы перекрасили по какому-то списку, то почему обратно перекрасить по нему же не можете?
Ну а с шейпами :) - сам клип разве не шейп?
Я думаю можно так делать - клип страны дублировать и располагать над страной, перекрашивать его с помощью сетРГБ в нужный цвет, можно подходящую альфу поставить, а когда не нужен - удалять и всё. Впрочем, с битмапдатой тоже самое, ведь клипы стран есть в библиотеке, значит можно делать с них скриншоты, их - в клипы - сетРГБ (ну или саму битмапину перекрасить) - свапДефт. Не нужна - удалили.
Это избавит вас от необходимости вручную "выдирать шейпы"

etc
01.08.2007, 14:17
А что мешает просто сносить модификатор цвета, когда мышь убирают с клипа?

Wolsh
01.08.2007, 22:21
Ну там не с клипа мышь убирают, там я так понял всякая статистика по странам-регионам показывается при нажатии на кнопки в специальном меню типа "численность населения" и "количество негров"... Но суть та же - как это можно просто удалить модификатор? Расскажи, в книжке такого не нашел?

iNils
01.08.2007, 22:51
setTransform и поставить там дефолтные параметры.

danhuu
02.08.2007, 12:28
А зачем определять цвет клипа? Из первого поста следует, что все клипы изначально одного цвета (песочного). Когда тыкаем в клип, он меняет цвет исходя из условия легенды, тогда каким образом вам поможет определение цвета, когда они все одинаковы изначально? Значит у вас должен быть массив соответствия, такой-то клип, такой то значение. Либо я не так что-то понял, либо вы не верно изложили суть.
Наверное, я нечётко выразился. В последующих проектах изначальный цвет может быть различным для разных стран.
А что мешает просто сносить модификатор цвета, когда мышь убирают с клипа?
Собственная тупость ;) Цвет меняю в общем виде так:

var colorTrans:ColorTransform = new ColorTransform();
colorTrans.rgb = some_color;
my_clip.transform.colorTransform = colorTrans;
Ergo, чтобы вернуть первоначальный цвет, можно сделать так?
my_clip.transform.colorTransform = null;
Если да, то это снимает проблему.

etc
02.08.2007, 13:29
Нет, надо вешать ColorTransofrm с дефолтными параметрами.

danhuu
02.08.2007, 13:41
Спасибо!