Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.11.2011, 00:28
uchenik12345 вне форума Посмотреть профиль Отправить личное сообщение для uchenik12345 Найти все сообщения от uchenik12345
  № 1  
Ответить с цитированием
uchenik12345

Регистрация: Jul 2009
Сообщений: 101
По умолчанию как найти промежуточный цвет?

Есть color1 и есть color2.
Есть количество шагов. Надо найти промежуточные цвета, будто бы это был gradient fill.
Я просто отнял один, от другого и поделил, потом прибавлял к color1. Получилось не то.
То есть в промежутках от темно-красного к светло розовому были желто-зеленые цвета.
Получается, надо как-то с отдельным учетом rr gg bb, но как то сразу не представляю как так вычислять.
Может у кого нибудь есть решение?

Старый 15.11.2011, 07:51
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 2  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
реализация с помощью ас3

Код AS3:
		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);
		}
__________________
сайт, vk

Старый 16.11.2011, 17:26
uchenik12345 вне форума Посмотреть профиль Отправить личное сообщение для uchenik12345 Найти все сообщения от uchenik12345
  № 3  
Ответить с цитированием
uchenik12345

Регистрация: 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.
Старый 16.11.2011, 18:58
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 4  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Процент должен быть от 0 до 1.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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