PDA

Просмотр полной версии : Программное изменение цвета линии без ее перерисовки. Это возможно?


Bорон
06.09.2007, 17:23
Добрго времени суток.

Есть програмно нарисованая внутри контейнера movieClip линия.
Возможно ли изменить ее цвет не перерисовывая ее?

С уважением. Ворон.

Psycho Tiger
06.09.2007, 17:50
Можно =)


mc=createEmptyMovieClip("mc",1);
mc.lineStyle(2,"0x0000FF",100);
mc.moveTo(random(Stage.width),random(Stage.height));
mc.lineTo(random(Stage.width),random(Stage.height));

var my_color:Color = new Color(mc);

_root.onMouseDown=function(){
my_color.setRGB(0xFF0000);

}


Рисуем линию, в пустом созданом мувиклипе, после создаем экземпляр класса color - my_color и говорим ему, что мы будем менять клип мс.
После нажатия мышки, меняем его цвет красный методом setRGB.

Bорон
06.09.2007, 18:40
Спасибо вам огромное при огромное!

Bорон
06.09.2007, 20:44
Я таки дико извиняюсь, а толщину линии менять можно без перерисовывания последней?

В хелпе по аналогии с вышенаписаным пытался что то найти - не нашел...

udaaff
06.09.2007, 21:23
Можно изменять параметры мувиклипа, в котором нарисована линия.

combo
06.09.2007, 22:13
Можно. Только вот с примером Tiger'a у меня чего-то не получилось её менять. Попробуй нарисовать прямую горизонтальную линию в мувике, увеличить его _height и повернуть (_rotation)

Kikasso
06.09.2007, 22:15
Я таки дико извиняюсь, а толщину линии менять можно без перерисовывания последней?

В хелпе по аналогии с вышенаписаным пытался что то найти - не нашел...
Только если клипу фильтр приделать, но это совсем нехорошо. Что мешает перерисовать?

2Combo - а если кривая?

combo
06.09.2007, 22:23
2Combo - а если кривая?
Кстати, есть один жестокий вариант. Делается несколько копий мувика-линии и ставятся на пару пикселей выше-ниже-правее-левее оригинала. :away:

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

Psycho Tiger
07.09.2007, 13:57
combo, то есть по твоему проще для цп и памяти нарисовать 2 прямые, сдвинутые от оригинала, чем перерисовать оригинал?
Щас попробую сделать програмно меняющиеся ширина...
P.S>Не думаю что у меня получиться...

combo
07.09.2007, 15:37
Нет, я же пишу: нужно обыграть вариант с копированием пикселей из оригинала-в-оригинал. Линия будет утолщаться... Хотя, возможно и нет. При вставке пикселей в битмапу, её содержимое вроде стирается, даже если она имела прозрачный фон... так ведь?

пс. а давайте устроим конкурс на самую сложную технологию утолщения линий без ихней перерисовки? :)

Mr. Fixit
07.09.2007, 16:18
а не легче тогда использовать фильтры?

Psycho Tiger
я бы посоветовал использовать класс ColorTransform

Bорон
08.09.2007, 03:09
Мдя.
Да никих проблем с отрисовкой нет.
Просто пишется небольшой редактор на флеше...
И хотелось бы что бы он "бегал" максимально "шустро".
Вот и спрашиваю на всякий случай.

P.S. Извращений можно придумать много разных... Но зачем. Можно прямые из квадратных мувиков генерировать. А мувики потом размывать с помощью фильтра. Сглаживание однако!..

2Mr. Fixit: а ColorTransform позволяет менять толщину линии?

Kikasso
08.09.2007, 03:33
ColorTransform позволяет менять толщину линии? Нет конечно. Это просто замена для Color - этот нынче не в моде. Перерисовывайте.

Bорон
08.09.2007, 03:53
Простите, а почему не в моде?
ColorTransform быстрее работает или в чем тут дело?

Kikasso
08.09.2007, 04:06
Простите, а почему не в моде?
ColorTransform быстрее работает или в чем тут дело?
Потому что открываем хелп по слову Color и видим слово "deprecated" Что это значит дословно, затруднюсь ответить, но что-то вроде "фу".

Psycho Tiger
08.09.2007, 09:54
А вдруг у человека 7 флэш, а не 8+? :))

Bорон
08.09.2007, 13:15
Спасибо вам большое за ликбез.

P.S. Может быть я ошибусь, кажется где то я этот "deprecated" встречал - это случайно не признак того что в дальнейших версиях функция может перестать поддерживаться?

etc
08.09.2007, 14:35
deprecated означает «устаревший». В AS3 уже нет Color.

Kikasso
08.09.2007, 18:43
Lingvo:
deprecate [ ] 1) протестовать, выступать против, резко осуждать, возражать

etc
08.09.2007, 18:48
Это буквальный перевод.