![]() |
закрасить произвольный контур цветом
Есть мувиклип, в котором находится некая фигура с контуром и заливкой. Вот как можно изменить цвет только заливки, не трогая контур? Если юзать такой метод, то естественно меняется цвет всей фигуры, вместе с контуром:
Код AS3:
|
сделать заливку вложенным MovieClip и применять к нему ColorTransform сколько угодно. Или програмно очистить мувиклип и програмно же нарисовать в него фигуру с нужной заливкой, но это при условии если у вас контур не слишком сложный.
|
Код:
сделать заливку вложенным MovieClip и применять к нему ColorTransform сколько угодноВообще задача состоит в закрашивании по клику разных контуров. Возможно я вообще не с того конца начал? |
>>есть только объект Shape, который как раз и состоит из контура и заливки..
вот и предлагалось разбить их на два шейпа, в одном контур, а в другом заливка.. еще можно срисовать это добро в битмап, а перекрашивать floodFill'ом - по клику будет самое то.. |
Код:
вот и предлагалось разбить их на два шейпа, в одном контур, а в другом заливка.. |
Цитата:
|
Код:
и напишите что вам не понятно. |
Короче у вас должен быть дисплайобджект состоящий из 2-ух других - в одном контур, в другом заливка. Или вот проще - клип, у него 2 чилда. В первый хоть руками, хоть программно рисуем контур, во второй (те же методы) - заливку. Ну и когда нужно применяем colorTransform или чем вы пользуетесь ко второму клипу в котором заливка.
|
Ну в общем так я и подумал. Просто думал, может возможно программно разделить контур и заливку в одном Shape. Похоже нельзя :(
|
В книге "Сборник рецептов..." описан следующий метод создания изображения с использованием маски, при этом видимой остается только маскированная часть изображения.
Добавлено через 1 минуту package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; public class spriteDrag extends Sprite { public function spriteDrag() { var loader:Loader = new Loader(); loader.load(new URLRequest("image.jpg")); addChild(loader); var maskSprite:Sprite = new Sprite(); maskSprite.graphics.lineStyle(); maskSprite.graphics.beginFill(0xFFFFFF); maskSprite.graphics.drawCircle(0, 0, 50); maskSprite.graphics.endFill(); loader.mask = maskSprite; addChild(maskSprite); maskSprite.startDrag(true); } } } Добавлено через 2 минуты Т.е. можно повторно не применять "сложные" методы отрисовки к объекту содержащему заливку, а залить только прямоугольник описывающий "сложную" фигуру. |
| Часовой пояс GMT +4, время: 19:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.