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

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

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

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Question Как сделать цвет темнее?

Здравствуйте, есть какой-либо цвет, например, 0x2C9100.
Нужно сделать его темнее на какое-то заданное значение (в процентах приблизить к 0x000000). Как это делается в теории я понимаю, нужно по каждой компоненте отнять процент, и все! Как поступить тут?
Может это может класс ColorTransform (flash.geom.ColorTransform)? Но я чего-то там не разобрался.
Спасибо.


Последний раз редактировалось enepx; 10.03.2007 в 16:15.
Старый 10.03.2007, 15:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Перевести его в HSB, потом менять B.

http://dev.etcs.ru/blog/as2/ru/etcs/draw/colorobject/ в помощь.

Старый 10.03.2007, 16:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Пример использования:

Код:
import ru.etcs.draw.ColorObject;
drawRect = function (color, y) {
	this.beginFill(color, 100);
	this.moveTo(0, y);
	this.lineTo(100, y);
	this.lineTo(100, y+2);
	this.lineTo(0, y+2);
	this.endFill();
};
var color = new ColorObject();
color.rgb = 0x2C9100;
var y = 0;
trace(color);
while (color.B>0) {
	trace('Brightness: '+color.B+', color: '+color.hex);
	drawRect(color.rgb, y += 2);
	color.B--;
}
while (color.B<100) {
	trace('Brightness: '+color.B+', color: '+color.hex);
	drawRect(color.rgb, y += 2);
	color.B++;
}
Или: http://dev.etcs.ru/blog/as2/ru/etcs/...implegradient/
Пример:
Код:
import ru.etcs.draw.SimpleGradient;
drawRect = function (color, y) {
	this.beginFill(color, 100);
	this.moveTo(0, y);
	this.lineTo(100, y);
	this.lineTo(100, y+2);
	this.lineTo(0, y+2);
	this.endFill();
};
var gradient = new SimpleGradient(0x2C9100,0x000000,100);
for (var i = 0;i<200;i+=2) {
	color = gradient.getColor(i/2);
	drawRect(color,i);
}


Последний раз редактировалось etc; 10.03.2007 в 16:30.
Старый 10.03.2007, 17:44
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 4  
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Цитата:
Сообщение от __etc
Пример использования:
ругается на var color = new ColorObject();
The class or interface 'ru.etcs.draw.ColorObject' could not be loaded.
var color = new ColorObject();


Последний раз редактировалось etc; 10.03.2007 в 17:46.
Старый 10.03.2007, 17:46
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Класс можно взять тут: http://dev.etcs.ru/framework.zip и распаковать архив как есть рядом с исходником (должны появится две папки ru и com), затем запустить.

Старый 10.03.2007, 17:48
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 6  
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
да я давно скачал положил его к общим Флешовым классам, думал должно прокатить, на import же он не ругался )

Старый 10.03.2007, 17:50
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Распакуй архив в c:\Documents and Settings\USER\Local Settings\Application Data\Macromedia\Flash 8\en\Configuration\Classes\

Старый 10.03.2007, 17:54
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 8  
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
А я в Program Files в флешовую распаковывал!
Кстати, все заработало! Спасибо.

Старый 10.03.2007, 18:03
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Изучи справку по этим классам, особенно по ColorObject.
Возможно, сегодня обновлю все классы, допишу JavaDoc и оформлю, как полагается. Т.е. архив можно будет перезакачать.

Старый 11.03.2007, 00:52
Llex3D вне форума Посмотреть профиль Отправить личное сообщение для Llex3D Найти все сообщения от Llex3D
  № 10  
Llex3D
 
Аватар для Llex3D

Регистрация: Oct 2004
Сообщений: 149
Всячески пытаются свои классы дать человеку в руки...
Вот, самый простой код, взятый с учебника:

Код:
function RGBtoHSB (rgb:Number)
{
	var R = (rgb&0xff0000)>>16;
	var G = (rgb&0xff00)>>8;
	var B = (rgb&0xff);
	
	var Br = Math.max(Math.max(R,G),B);
	var minVal = Math.min(Math.min(R,G),B);
	var delta = Br - minVal;
	
	if ( Br == 0 ) { S = 0 } else { S = delta/Br*100; }
	if ( S == 0) { H = 0 } else if (R == Br) { H = 60*(G-B)/delta } else if ( G == Br ) { H = 120+60*(B-R)/delta } else {
															   H = 240+60*(R-G)/delta;}
	if ( H < 0) { H +=360 };
	return ([Math.round(H), Math.round(S), Math.round(Br/255*100)])
}
		
function HSBtoRGB(H, S, Br)
{		
	Br = Br/100*255;
	if ( S == 0) { 
		R = G = B = Br 
	} else {
		var resH = H/60-Math.floor(H/60);
		var bot = (Br*(1-S/100));
		var dec = (Br*(1-(S*resH)/100));
		var inc = (Br*(1-(S*(1-resH)/100)));
		
		switch (Math.floor(H/60)){
			case 0:	R = Br;	 G = inc; B = bot;	break;
			case 1:	R = dec; G = Br;  B = bot;	break;
			case 2:	R = bot; G = Br;  B = inc;	break;
			case 3:	R = bot; G = dec; B = Br;	break;
			case 4:	R = inc; G = bot; B = Br;	break;
			case 5:	R = Br;  G = bot; B = dec;	break;
		}
	}
	return Math.round(R)<<16|Math.round(G)<<8|Math.round(B);
}
Выполняешь следующее
Код:
HSBColor =  RGBtoHSB(0х2C9100) // HSBColor становится масивом
                                              // HSBColor[0] - Hue - тон ( тон цвета)
                                              // HSBColor[1] - Saturation - насыщенность (%)
                                              // HSBColor[2] - Brightnes, а вот это нам интересно, увеличивая или уменьшая этот параметр, мы увеличиваем или уменьшаем яркость цвета (%)

changeBrightnessOn = -10 // уменьшим яркость на 10%
myMcColor = new Cоlor (my_mc)
myMcColor.setRGB(HSBtoRGB(HSBColor[0], HSBColor[1], HSBColor[2]+changeBrightnessOn))
Вот и всего-то делов...
Эта схема перевода стандартная наработка, если хочешь, напиши себе универсальный клас и используй его на здоровье

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

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

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


 


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


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