![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Привет! Флэшеры, без вас не справлюсь. Задумал вот что: имеется на экране любой клип. Для простоты пускай будет красный (0хFF0000). Нужен след от него - для этого в каждом кадре я рисую битмапу, где фиксируется положение клипа. Получается как будто красным фломастером по холсту провел. С этим проблем нет. Далее хочу чтобы след темнел, т.е. в каждом шаге значение RR уменьшалось на какую-то величину. Для этого использую
var trans:Transform = new Transform(drawMc); var r = 255 - n; trans.colorTransform = new ColorTransform (1, 0, 0, 1, r, 0, 0, 0); Блин, как тяжело бывает рассказать что нужно. |
|
|||||
|
Не, блюром не получится - эффект будет применяться ко всей битмапе и шлейф будет равномерным.
Битмап использую т.к. это здорово уменьшает тормоза, т.к. на сцене всего один клип присутствует. Вот, получил то что хотел. Если кому нужно - выложу класс. Upd: вообщето тоже не то. Это будет работать только если шлейф плавно исчезает, но изменять цвет его не получится. Вобщем вот что нужно: нарисовать красный клип в битмапу, уменьшить красный канал и добавить немного зеленого. Следующий шаг: снова нарисовать красный клип в ту же битмапу и снова уменьшить красный канал и добавить немного зеленого. Таким образом тот рисунок, что добавили на первом шаге должен быть более желтым чем тот, который добавили на втором. Но вот незадача, когда меняем значения каналов то новый добавляемый рисунок не красный, а с учетом изменения каналов на всех шагах. Если кто придумает алгоритм как это исправить - напишите. Последний раз редактировалось Волгоградец; 26.06.2008 в 13:07. |
|
|||||
|
Banned
Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
|
Ну незнаю блюром тоже самое получается... С виду. Но разве твой колор трансформ не ко всму битмапу применится, или там только этот кружок будет?
|
|
|||||
|
Вот, готов сформулировать проблему.
Вобщем нужно изменить offset изображения на определенную величину. Т.е. присутствуют в изображении два пиксела. Значения красных каналов равны R=100 и R=200 соответственно. Как можно задать их значение на 10 большее, т.е. чтобы стало R=110 и R=210??? Вроде встроенные фильтры этого не умеют (надеюсь я ошибаюсь)... |
|
|||||
|
Modus ponens
|
Попробуй BitmapData.threshold method.
Что оно делает: позволяет выбрать область битмапдаты базируясь на максимальном и минимальном значении для каналов и сделать с ней какое-то преобразование (например, затемнить)... немного заморочливо, но если будет время - попробую что-то такое сделать.
__________________
Hell is the possibility of sanity |
|
|||||
|
Цитата:
threshold + 0xA |
|
|||||
|
Эм... Как-то так подправил хелповский пример по BitmapData.colorTransform:
import flash.display.BitmapData;
import flash.geom.ColorTransform;
import flash.geom.Point;
var myBitmapData:BitmapData = new BitmapData(200, 80, false, 0x00FFFFFF);
var sx=0;
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(myBitmapData, this.getNextHighestDepth());
var nBD:BitmapData = new BitmapData(10, 80, false, 0x00FF0000);
mc.onEnterFrame = function() {
myBitmapData.colorTransform(myBitmapData.rectangle, new ColorTransform(1, 1, 1, 1, 0, 20, 0, 0));
myBitmapData.copyPixels(nBD,nBD.rectangle,new Point(sx,0));
sx+=10;
if(sx>200){
sx=0;
}
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|