Показать сообщение отдельно
Старый 13.06.2016, 18:37
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 2  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Представьте себе цвет как комплекс трёх параметров - красный, зелёный и синий(RGB).
Один цвет хранится в четырёх байтах, последний из которых обычно пустой при отсутствии transparency(прозрачности).
Чтобы получить из цвета компоненты, необходимо использовать битовые сдвиги.
Код AS3:
var color:uint = 0x0F41AC;
var rgb:Object = {};
rgb.red = color >> 16 & 0xFF; //сдвигаем на 2 байта, чтобы остался только первый байт(2 байта обрезаются)
rgb.green = color >> 8 & 0xFF; //сдвигаем на 1 байт, чтобы остались только 2 первых байта, и обрезаем побитовым И
rgb.blue = color & 0xFF; //обрезаем и остаётся только последний байт
 
var rebuiltColor:uint = ((rgb.red << 16) | (rgb.green << 8) | rgb.blue) & 0xFFFFFF; //так собираем компоненты назад.
Ваша задача выбрать в фотошопе 2 цвета, скопировать их компоненты(или HEX-код, который будет программно разбиваться на компоненты) и сделать плавный переход из одного в другой. Т.е. должен получиться метод, возвращающий цвет в зависимости от параметра(0~1)
Воспользоваться можно любой из интерполяций, линейная - самая быстрая.
Код AS3:
 
		public static function interpolate(a:Number, b:Number, x:Number, z:Number = 0, c:Number = 0):Number
		{
			switch (interpolation)
			{
				case LINEAR:
					return  a * (1 - x) + b * x;
					break;
				case COSINE:
					var ft:Number = x * 3.1415927;
					var f:Number = (1 - Math.cos(ft)) * .5;
					return  a * (1 - f) + b * f;
					break;
				case CUBIC:
					var P:Number = (c - b) - (z - a);
					var Q:Number = (z - a) - P;
					var R:Number = b - z;
					var S:Number = a;
					return P*x*x*x + Q*x*x + R*x + S;
					break;
			}
			return 1;
		}
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 13.06.2016 в 18:56.