|
|
|||||
Регистрация: Jul 2009
Сообщений: 101
|
как найти промежуточный цвет?
Есть color1 и есть color2.
Есть количество шагов. Надо найти промежуточные цвета, будто бы это был gradient fill. Я просто отнял один, от другого и поделил, потом прибавлял к color1. Получилось не то. То есть в промежутках от темно-красного к светло розовому были желто-зеленые цвета. Получается, надо как-то с отдельным учетом rr gg bb, но как то сразу не представляю как так вычислять. Может у кого нибудь есть решение? |
|
|||||
реализация с помощью ас3
static public function joinChannels(red:int, green:int, blue:int):uint { return red << 16 | green << 8 | blue; } static public function getRedChannell(color:uint):uint { return color >> 16; } static public function getGreenChannell(color:uint):uint { return color >> 8 & 0xFF; } static public function getBlueChannell(color:uint):uint { return color & 0xFF; } static public function interpolate(start:uint, end:uint, percent:Number = .5):uint { var _r1:uint = getRedChannell(start); var _g1:uint = getGreenChannell(start); var _b1:uint = getBlueChannell(start); var _r2:uint = getRedChannell(end); var _g2:uint = getGreenChannell(end); var _b2:uint = getBlueChannell(end); var _rP:uint = _r1 + (_r2 - _r1) * percent; var _gP:uint = _g1 + (_g2 - _g1) * percent; var _bP:uint = _b1 + (_b2 - _b1) * percent; return joinChannels(_rP, _gP, _bP); } |
|
|||||
Регистрация: Jul 2009
Сообщений: 101
|
Что то непашет. Функция возвращает 7-и значное и выше значение, что уже странно.
Например: color1=0xcc0000 (темно-красный), color2=0хffccff (розовый), при проценте 73,33333 дает _rP=f67, _gP=3a6f, _bP=490c и joinChannels дает f7f6f0c. встречаются и 8-значные значения 10bfcfb0 Последний раз редактировалось uchenik12345; 16.11.2011 в 18:35. |
Часовой пояс GMT +4, время: 01:28. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|