PDA

Просмотр полной версии : Смешение цветов


Nomad
16.10.2002, 19:57
народ, я ламо но учусь.. есть вопрос - как смешивать цвета?
суть проблемы в следующем:
у меня набо кнопок, при нажатии на которые я задаю значение переменной _root.MyColor

например, нажав на красную кнопку я получаю
_root.myColor = 0xFF0000

теперь у меня есть мувик, который я крашу этим цветом

mc0.onPress = function() {
myColor = new Color(this);
myColor.setRGB(_root.myColor);
};

и всё у меня хорошо. но...
как сделать, чтобы цвета смешивались? те если я выберу сначала 0хFF0000 а потом нажму на кнопку 0хFFFFFF, то как сделать чтобы красный стал светлее?? те что то типа 0xFF9999 ?

смешивание не обязательно должно быть правильным.. может нужно просто складывать значения RGB в десятичной системе?

заранее признателен!

wwwita
17.10.2002, 11:18
пробуй :D

на самом деле е совсем поятно что ты хочешь делать .... :confused:

если просто светлее тогда тебе подойдет лучше наверное Trasform *за точное название не ручаюсь* (там ещё альфа добавляется) ...... а так.... если просто смешение... то попробуй вычесть одно значение из другого (складывать лучше не стоит .. геморроя много) ....

Nomad
17.10.2002, 12:15
есть линк. чтобы было понятнее, стоит поиграться с красками. мне очень нужно знать как там цвета смешиваются.

http://pbskids.org/sagwa/color/paint/index_paint.html

есть идеи?
вроде складывать значения RGB не катит. так например красный - r=255 g=0 b=0, а если сложить его с белым (r=o, g=0, b=0) то я не получу более светлого красного..

wwwita
17.10.2002, 13:00
там весь прикол в кисточке :)

а цвета ... я же писал вроде что их по моему лучше вычитать ... так не очень запарно будет ....

что касается более белого ... то он будет ближе к FFFFFF а не к 000000 (это черный) ....
посмотри исходники ... там вроде что-то было подобное ....

derhab
17.10.2002, 13:08
меняй просто динамически значения переменной _root.myColor, то есть если у тебя кнопка, то при нажатии на нее присваивай переменной новое значение.

ну а светлее открытый красный при таком способе изменения цвета по моему стать не может, только если ты изменишь альфу, а бэкграунд у тебя при этом белый. Вот если использовать процентные соотношения r, g, b тогда другое дело...

derhab
17.10.2002, 14:12
прошу прощения:))), че то я запарился, альфа здесь не при чем, можно конечно высветлять цвет и так.

Nox Noctis
17.10.2002, 15:37
чтобы осветлить цвет нужно всего лишь пропорционально увеличить значения RR, GG и BB...
чтобы сделать темнее, соответственно, наоборот...
типа вот так: (запустить и поелозить мышкой по сцене =) )
rgb = function (obj) {
return (obj.r << 16 | obj.g << 8 | obj.b);
};
tellTarget (a=createEmptyMovieClip("test", 1)) {
lineStyle(100);
moveTo(50, 50);
lineTo(50.15, 50);
col = new Color(this);
control = {r:255, g:0, b:0};
fade = 1;
col.setRGB(_root.rgb(control));
}
a.onMouseMove = function() {
tellTarget (this) {
control.g += fade;
control.b += fade;
col.setRGB(_root.rgb(control));
if (!(control.g%255)) {
fade *= -1;
}
}
};



можно еще извратиться -
взять функцию, которая переводит значения цветов из RGB системы в систему HSB - тогда чтобы сделать цвет светлее-темнее нужно будет менять всего один параметр.

про HSB смотреть здесь =) (http://www.flasher.ru/forum/showthread.php?s=&threadid=37016&highlight=%F1%EF%F0%E0%F8%E8%E2%E0%EB)

если тебе нужно не просто светлее-темнее - то тебе точно нужна система HSB: в радиальной палитре всего один параметр отвечает за оттенок цвета. то есть меняя один-единственный параметр можно получить любой из 16777215 цветов =)

Nomad
18.10.2002, 18:32
это всё прикольно, но тк я ламо то найти применения пока этому ещё не смог.
у меня проблема в том, что мне нужно именно смешивать два цвета. осветление красного это просто пример.. плз глянь сюда - http://pbskids.org/sagwa/color/paint/index_paint.html - мож ты знаешь каким макаром там краски мешаются?
те там ты можешь сначала выбрать красный, а потом если нажмёшь на белый, красный начёт светлеть. чтобы получить белый надо нажать на кнопку несколько раз подряд..
плз, посомтри линк... может ты поймёшь о чём я