Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Создание бордера на shape (http://www.flasher.ru/forum/showthread.php?t=121663)

leo99 19.02.2009 21:04

Создание бордера на shape
 
Помогите найти правильное решение, создания бордера вокруг уже созданой формы (любой сложности).
Пример (на словах): существует множество "movie clip" содержащих один слой с разнообразным "shape",
задача - пройтись по всем мувикам залить их определенным цветом, и нарисовать им бордер 1px другим цветом.

Для этого написал одну функцию (св. в конце темы),
но она плохо спраляется с определнными формами,
может ктось уже сталкивался с данной задачей, помогите плиз:)

Код AS1/AS2:

function changeColor(obj,fill,bg){
Name=obj._name;
obj.attachMovie(Name,'bg1',1,{_x:1,_y:1});
ColorBg = new Color(obj['bg1']);
ColorBg.setRGB(bg);
obj.attachMovie(Name,'bg2',2,{_x:-1,_y:1});
ColorBg = new Color(obj['bg2']);
ColorBg.setRGB(bg);
obj.attachMovie(Name,'bg3',3,{_x:1,_y:0});
ColorBg = new Color(obj['bg3']);
ColorBg.setRGB(bg);
obj.attachMovie(Name,'bg4',4,{_x:-1,_y:0});
ColorBg = new Color(obj['bg4']);
ColorBg.setRGB(bg);
obj.attachMovie(Name,'bg5',5,{_x:0,_y:1});
ColorBg = new Color(obj['bg5']);
ColorBg.setRGB(bg);
obj.attachMovie(Name,'bg6',6,{_x:0,_y:-1});
ColorBg = new Color(obj['bg6']);
ColorBg.setRGB(bg);
obj.attachMovie(Name,'bg7',7,{_x:1,_y:-1});
ColorBg = new Color(obj['bg7']);
ColorBg.setRGB(bg);
obj.attachMovie(Name,'bg8',8,{_x:-1,_y:-1});
ColorBg = new Color(obj['bg8']);
ColorBg.setRGB(bg);
 
obj.attachMovie(Name,'area',9,{_x:0,_y:0});
ColorFill = new Color(obj['area']);
ColorFill.setRGB(fill);
}

obj - сылка на "movie clip" который существует на сцене и в библиотеке установлен "Export for ActionScript"
fill - цвет заливки
bg - цвет бордера

dimarik 19.02.2009 23:24

класс GlowFilter. Пример использования.

leo99 20.02.2009 13:21

dimarik спасибо за ответ, и ссылочку (почитаю на досуге другие статьи).

попробывал этот фильтр, ничего хоррошего сказать не могу:
- он рисует не границу, а дает свечение, что приводит к закруглению
бордера на острых углах.
- много жрет ресурсов

aksios 20.02.2009 13:44

Раскройте смысл: "уже созданой формы" - кем, как и когда созданной?
Нужный эффект можно получить, но как бы универсальное решение будет за рамками приведенной функции и целесообразность таких затрат на обработку изображения вызывает сильные сомнения. Особенно, касаясь реализации на АС2.

leo99 20.02.2009 14:32

работа ведется с векторной картой,
которая имеет большое количество "областей" отделенных друг от друга границой.
все области "shape", я взял в мувиклип, установил для них "Export for ActionScript" и задал то же имя на сцене.
При парсинге xml, каждая область должна быть залита определенным цветом + должна быть нарисована граница тоже определнного цвета.
т.к. областей очень много (+ будут еще аналогичные карты), и цветовые гаммы будут менятся, без actionscript обойтись не получится.

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

qazwsx 20.02.2009 14:47

Непонимаю в чем проблема? Области по точкам рисуются? Если да то проблем вообще не может быть никаких...

GlowFilter нужно установить внутренний с маленьким блюром и большой "силой". Патом то что получится лучше срисовать в битмап и использовать...

leo99 20.02.2009 15:39

области уже есть, их нужно закрасить и нарисовать бордер...
с GlowFilter уже наигрался, тормоза ужас... областей > 200, и это еще не предел

qazwsx 20.02.2009 15:54

Неправильно игрался

leo99 20.02.2009 20:10

Цитата:

Сообщение от qazwsx (Сообщение 799906)
Неправильно игрался

повторяюсь, GlowFilter не подходит, т.к.
1. жрет много ресурсов
2. бордеры делает не те что мне нужно

qazwsx 20.02.2009 20:44

Потому что ты не правильно делаеш)

P.S Повторяю...

Смотри в сторону http://www.flasher.ru/forum/showpost...75&postcount=6


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

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