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

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

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

Регистрация: Jan 2007
Сообщений: 8
По умолчанию как смешать цвета двух клипов

Мне надо сделать так чтобы при соприкосновении два клипа слились в один, и например если у одного клипа был красный цвет, а у другого желтый, то у третьего клипа должен быть оранжевый цвет, или из черного и белого получился бы серый...

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

Регистрация: Sep 2002
Сообщений: 30,787
http://dev.etcs.ru/blog/as2/ru/etcs/...implegradient/
Судя по вопросу, тебе надо пользовать середину градиента.

Старый 27.01.2007, 18:32
FluFf вне форума Посмотреть профиль Отправить личное сообщение для FluFf Найти все сообщения от FluFf
  № 3  
Ответить с цитированием
FluFf

Регистрация: Jan 2007
Сообщений: 8
а как разбить цвет, полученный getRGB на составляющие? то есть переменной r1 присвоить красную составляющую первого клипа, r2 - второго и.т.д.
А потом можно будет взять среднее арифметическое...
я попробовал взять среднее арифметическое от всего цвета:
Код:
c1 = new Color(mc1);
c2 = new Color(mc2);
c3 = new Color(mc3);
c1.setRGB(0xFFFFFF);
c2.setRGB(0x000000);
col1 = c1.getRGB();
col2 = c2.getRGB();
col = (col1+col2)/2;
c3.setRGB("0x"+col.toString(16));
только у меня ерунда получается белый клип возвращает значение 16777215, черный 0, и получается голубой... а мне серый надо...

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Хотя бы так:
Код:
function splitRGB( rgb ){
	var rgb_str = rgb.toString(16);
	var R = Number( "0x" + rgb_str.slice( 0,2) );
	var G = Number( "0x" + rgb_str.slice( 2,4) );
	var B = Number( "0x" + rgb_str.slice( 4,6) );
	return {R:R, G:G, B:B};	
}
собрать обратно:
Код:
function joinRGB(R, G, B){
  return ( R << 16 | G << 8 | B );
}


Последний раз редактировалось Kikasso; 27.01.2007 в 18:41.
Старый 27.01.2007, 21:18
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Kikasso, splitRGB в некоторых случаях работать не будет.

Код:
function numberToRGB(color:Number):Object {
		color = isNaN(color) ? 0 : color;
		var r:Number = (color >> 16);
		var g:Number = (color >> 8) & 0xFF;
		var b:Number = color & 0xFF;
		var outObj:Object = {r:r,g:g,b:b};
		return outObj;
	}
Выдрал из класса.

Старый 27.01.2007, 22:06
FluFf вне форума Посмотреть профиль Отправить личное сообщение для FluFf Найти все сообщения от FluFf
  № 6  
Ответить с цитированием
FluFf

Регистрация: Jan 2007
Сообщений: 8
Большое спасибо... все получилось... только обьясните пожалуйста поподробнее как работают эти строки
Код:
var r:Number = (color >> 16);
var g:Number = (color >> 8) & 0xFF;
var b:Number = color & 0xFF;

Старый 28.01.2007, 03:00
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 7  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Цитата:
>> Оператор (побитовый), конвертирует expression1 и expression2 в 32-битное целое число и смещает все биты в expression1 вправо на число разрядов, указанное целым числом, результирующим от преобразования expression2. Биты, смещённые вправо, игнорируются. Чтобы сохранить знак изначального выражения expression, биты слева заполняются нулями, если наиболее значимый бит (самый левый) выражения expression1 будет 0, или заполняются единицами, если наиболее значимый бит будет 1. Смещение значения вправо на одну позицию эквивалентно делению на 2, пренебрегая остатком.
& (bitwise AND)
Оператор (побитовый), конвертирует expression1 и expression2 в 32-битные целые числа, и выполняет операцию "булевого И" над каждым битом аргумента целого числа.. Числа с плавающей запятой преобразуются в целое число, путём отбрасывания десятичной части. В результате мы имеем новое беззнаковое целое число.
Скачай переведенный хелп, тема прилеплена.

__etc, спасибо за поправку, я тоже выдирал, но не из класса и не из той версии, как показало расследование.. на самом деле было так:
Код:
function splitRGB(rgb){
 var rgb_str = rgb.toString(16);
 var R = Number( "0x" + rgb_str.slice( 0,2) ) || 0;
 var G = Number( "0x" + rgb_str.slice( 2,4) ) || 0;
 var B = Number( "0x" + rgb_str.slice( 4,6) ) || 0;
 return { rb:R, gb:G, bb:B, aa:100, ab:0 };
//возвращает объект для setTransform()	
}
Ваш способ лучше, признаю.


Последний раз редактировалось Kikasso; 28.01.2007 в 03:03.
Старый 28.01.2007, 04:23
before вне форума Посмотреть профиль Отправить личное сообщение для before Посетить домашнюю страницу before Найти все сообщения от before
  № 8  
Ответить с цитированием
before
[+ 1.4 28.01.07]
[+1.2 28.01.07]
 
Аватар для before

Регистрация: Nov 2006
Адрес: Saratov
Сообщений: 14
Кикассо, пожалуйста объясни видать особо одаренному, что произойдет на конкретных примерах:
AA0000(красный)
101010100000000000000000
0000AA(синий)
000000000000000001010101

примеры:
101010100000000000000000 >> 8 = ?
101010100000000000000000 << 4 = ?
000000000000000001010101 | 101010100000000000000000 = ?
000000000000000001010101 & 101010100000000000000000 = ?

чего-то я не догоняю.
кстати не нужен мега-конвертер систем счисления, от двоичной до 36-ричной! (012...xyz) во флеше

Старый 28.01.2007, 04:34
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 9  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
домашнее задание:
101010100000000000000000 >> 8 =
1010101000000000

101010100000000000000000 << 4 =
1010101000000000000000000000


000000000000000001010101 |
101010100000000000000000 =
101010100000000001010101

000000000000000001010101 &
101010100000000000000000 =
000000000000000000000000

и еще момент не забудьте,
Цитата:
Сообщение от help
Чтобы сохранить знак изначального выражения expression, биты слева заполняются нулями, если наиболее значимый бит (самый левый) выражения expression1 будет 0, или заполняются единицами, если наиболее значимый бит будет 1


Последний раз редактировалось Kikasso; 28.01.2007 в 04:40.
Старый 28.01.2007, 04:42
before вне форума Посмотреть профиль Отправить личное сообщение для before Посетить домашнюю страницу before Найти все сообщения от before
  № 10  
Ответить с цитированием
before
[+ 1.4 28.01.07]
[+1.2 28.01.07]
 
Аватар для before

Регистрация: Nov 2006
Адрес: Saratov
Сообщений: 14
понятно, Благодарю!!!

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

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

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


 


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


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