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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Jul 2002
Адрес: Yo-burg
Сообщений: 116
Отправить сообщение для NikitON с помощью ICQ
По умолчанию Градиент от А до Я или полноцветный градиент

Люди, поюзав немного программный градиент захотелось сделать (пииип!) радугу, но я даже не понял как сделать градиент более двух цветов... Подскажите кто знает, как это сделать?

Спасибо
__________________
Nikit0N in da house!

Старый 22.08.2003, 18:33
major вне форума Посмотреть профиль Отправить личное сообщение для major Найти все сообщения от major
  № 2  
major
 
Аватар для major

Регистрация: Jul 2003
Адрес: SPb
Сообщений: 125
_root.createEmptyMovieClip( "grad", 1 );
with ( _root.grad )
{
colors = [ 0xFF0000, 0x0000FF,0x00FF00 ];
alphas = [ 100, 100,100 ];
ratios = [ 0,0x11, 0xFF ];
matrix = { a:200, b:0, c:0, d:0, e:200, f:0, g:200, h:200, i:1 };
beginGradientFill( "linear", colors, alphas, ratios, matrix );
moveto(100,100);
lineto(100,300);
lineto(300,300);
lineto(300,100);
lineto(100,100);
endFill();
}
stop();
// чуть подправленный пример из хелпа
// трехцветный градиент

Старый 22.08.2003, 19:41
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 3  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
здесь нужна система не RGB а HSV (HSL)...
по ней все легко и просто получается :)

кто найдет полное объяснения какого-нибудь способа перевода rgb <--> hsl, будет тому щастье :) я не нашел...

вот. код не мой, где взял - не помню :)
почему из ржб в хсв тут переводится именно так - я не понимаю...

Код:
// FULL GRADIENT FILL EXAMPLE
//
_root.createEmptyMovieClip("FColorWheel", 1);
FColorWheel.hex = function(nmbr, base) {
	var hexStr = "ABCDEF";
	var hexVal = Math.round(nmbr*255/base);
	dig1 = hexVal%16;
	dig2 = (hexVal-dig1)/16;
	if (dig1>9) {
		dig1 = hexStr.charAt(dig1-10);
	}
	if (dig2>9) {
		dig2 = hexStr.charAt(dig2-10);
	}
	hexVal = dig2.toString()+dig1.toString();
	return hexVal;
};
//
FColorWheel.hsvToRGB = function(h, s, v) {
	var r, g, b, i, f, p, q, t;
	if (s == 0) {
		r = g=b=v;
	}
	if (h == 360) {
		h = 0;
	}
	h /= 60;
	i = Math.floor(h);
	f = h-i;
	p = v*(1-s);
	q = v*(1-(s*f));
	t = v*(1-(s*(1-f)));
	if (i == 0) {
		r = v;
		g = t;
		b = p;
	} else if (i == 1) {
		r = q;
		g = v;
		b = p;
	} else if (i == 2) {
		//
		r = p;
		g = v;
		b = t;
	} else if (i == 3) {
		r = p;
		g = q;
		b = v;
	} else if (i == 4) {
		r = t;
		g = p;
		b = v;
	} else if (i == 5) {
		r = v;
		g = p;
		b = q;
	}
	this.red = this.hex(r*255, 255);
	this.green = this.hex(g*255, 255);
	this.blue = this.hex(b*255, 255);
	this.hexColor = "0x"+this.red+this.green+this.blue;
	return this.hexColor;
};
//
FColorWheel.drawWheel = function(radius, centerX, centerY, s, b) {
	for (var i = 0; i<=360; i++) {
		angle0 = (i/180)*Math.PI;
		angle1 = ((i+1)/180)*Math.PI;
		c = this.hsvToRGB(360-i, s, b);
		with (this) {
			colors = [0xFFFFFF, Number(c)];
			alphas = [100, 100];
			ratios = [0, 0xFF];
			//
			matrix = {a:2*radius, b:0, c:0, d:0, e:2*radius, f:0, g:centerX, h:centerY, i:1};
			beginGradientFill("radial", colors, alphas, ratios, matrix);
			moveTo(centerX, centerY);
			lineTo(centerX+radius*Math.cos(angle0), centerY+radius*Math.sin(angle0));
			lineStyle(1.25, "0x000000", 50);
			//
			lineTo(centerX+radius*Math.cos(angle1), centerY+radius*Math.sin(angle1));
			lineStyle(0, "0x000000", 0);
			moveTo(centerX, centerY);
			endFill();
		}
	}
};
//
FColorWheel.drawWheel(100, 200, 200, 1, 1);

Старый 22.08.2003, 19:54
llllllllll вне форума Посмотреть профиль Отправить личное сообщение для llllllllll Найти все сообщения от llllllllll
  № 4  
llllllllll

Регистрация: Feb 2001
Сообщений: 1,893
http://www.peterjoel.com/ActionScript/hsb_as.php

Очень и очень разумный дяденька

Старый 22.08.2003, 19:59
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 5  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
код что я запостил выше - точно тот же что и у этого дядьки (может я у него и взял ?..)
я его видел и читал...

НО

я не понимаю этой математики :)
почему так ?
он там ничего не объясняет в коде, просто пишет, цитирую:
"The colour-space conversion is based purely on my own interpretation and intuitive notion of the colour spaces."

ага, я за него очень рад, он умный, но объяснения нету :)

речь ведь не о том, чтобы найти готовую программу и использовать, а о том, чтобы хотя бы для начала понять что она делает и зачем :)


Последний раз редактировалось Nox Noctis; 22.08.2003 в 20:00.
Старый 22.08.2003, 20:05
llllllllll вне форума Посмотреть профиль Отправить личное сообщение для llllllllll Найти все сообщения от llllllllll
  № 6  
llllllllll

Регистрация: Feb 2001
Сообщений: 1,893
А я то почем знаю, мы боты даем ответы приблизительно по теме

Старый 22.08.2003, 20:08
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 7  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
Оригинал написал(а) llllllllll
А я то почем знаю, мы боты даем ответы приблизительно по теме :)
я буду ботом-задающим-вопросы :)

Старый 22.08.2003, 21:56
llllllllll вне форума Посмотреть профиль Отправить личное сообщение для llllllllll Найти все сообщения от llllllllll
  № 8  
llllllllll

Регистрация: Feb 2001
Сообщений: 1,893
А впринципе вдумался

HSB - hue, saturation, brightness

Вся модель прдеставляется в виде цилиндра.

H - можно представить в виде окружности (весь спектр) где в 0-ле градусов красный цвет, в 120-ти - зеленый, в 240-ка - синий, наши знакомые RGB

В 60-ти градусах между чистым красным и чистым зеленым значение обоих будет 255 по RGB, тоесть получиться желтый, а вот в 30 градусах будет 255 красного и 127 зеленого - тоесть оранжевый

S - это как говорят "добавление белой краски", насыщенность, тоесть если у нас HSB [60,100,100] - то это значит, у нас по 255 RGB-ишных красного и зеленого, к синему, который имеет значение 0, ничего не прибавляется, но если сделать HSB[60,50,100] - где S равна 50%, то синяя компонента станет у нас 127, если синия компонента у нас была бы скажем 127 при 100% насышенности, то при 50% она стала бы (255 - 127)/2 + 127 `= 191

B Ну тут все понятно - Яркость или "добавление черной краски" - тут урезаем значение каждого цвета, тоесть если при 100% яркости максимальное значение красного было 255, то при 50% будет 127, и это соответсвенно берется в расчет насыщенности, тоесть HSB[60,100,50] = RGB[128,128,0], а HSB[60,50,50] будет RGB[128,128,64]

2Nox Noctis: хреновый из меня бот вышел

Старый 23.08.2003, 00:17
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 9  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
мда... а из меня бот, видимо, замечательный...

вот я по отдельности все твои слова понимаю - а что вместе получается...

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

в принципе это же должно быть похоже на перевод из ортогональных координат в циллиндрические, да ?

но что там за шаманство с переменными тогда...


Последний раз редактировалось Nox Noctis; 23.08.2003 в 00:20.
Старый 25.08.2003, 11:12
NikitON вне форума Посмотреть профиль Отправить личное сообщение для NikitON Найти все сообщения от NikitON
  № 10  
NikitON
 
Аватар для NikitON

Регистрация: Jul 2002
Адрес: Yo-burg
Сообщений: 116
Отправить сообщение для NikitON с помощью ICQ
Всем огромное спасибо!
__________________
Nikit0N in da house!

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

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

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


 


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


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