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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Jul 2012
Сообщений: 148
По умолчанию Промежуточные цвета

Есть ли способ просчета промежуточного цвета между двумя цветами?
Код:
#FF0000 -> a -> b -> c -> #009900

Старый 29.01.2016, 13:24
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 2  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
что значит промежуточные цвета? какой у них интервал? это обычные числа, только в 16-тиричном формате
случайный цвет из интервала будет считаться так
Код AS3:
var fromColor:uint=0xff0000;
var toColor:uint=0x009900;
var color:uint=fromColor+Math.floor(Math.random()*(toColor-fromColor))

Старый 29.01.2016, 13:36
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 3  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
Нашел.

Код AS3:
function interpolateColor(fromColor:uint, toColor:uint, progress:Number):uint {
	var q:Number = 1-progress;
	var fromA:uint = (fromColor >> 24) & 0xFF;
	var fromR:uint = (fromColor >> 16) & 0xFF;
	var fromG:uint = (fromColor >>  8) & 0xFF;
	var fromB:uint =  fromColor & 0xFF;
	var toA:uint = (toColor >> 24) & 0xFF;
	var toR:uint = (toColor >> 16) & 0xFF;
	var toG:uint = (toColor >>  8) & 0xFF;
	var toB:uint =  toColor & 0xFF;
	var resultA:uint = fromA*q + toA*progress;
	var resultR:uint = fromR*q + toR*progress;
	var resultG:uint = fromG*q + toG*progress;
	var resultB:uint = fromB*q + toB*progress;
	var resultColor:uint = resultA << 24 | resultR << 16 | resultG << 8 | resultB;
	return resultColor;
}
 
var len:Number = 20;
var step:Number = 1 / len;
for(var i:int = 0; i < len; i++){
	trace(interpolateColor(0x04AA8A, 0xFF2A00, step * i));
}
Параметр progress - это и есть тот промежуточный цвет (число от 0 до 1).
Изображения
 


Последний раз редактировалось Vlad84; 29.01.2016 в 17:18.
Создать новую тему Ответ Часовой пояс GMT +4, время: 10:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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