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

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

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

Регистрация: Feb 2010
Сообщений: 18
По умолчанию Баночка для смешивания красок.

Подскажите пожалуйста каким образом можно создать баночку для смешивания красок для игры.
Цель игры разрисовать картинку, на экране 6 основных цветов: красный, жёлтый, зелёный, синий, белый, чёрный.
Смысл баночки: кисточкой набираешь жёлтую краску, отправляешь в баночку, кисточкой набираешь красную краску - отправляешь в баночку - и в итоге рисуешь оранжевым.

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
видимо, каждый канал обоих цветов складываем и делим на количество цветов
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 04.03.2011, 21:50
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 3  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
Сообщение от cleptoman Посмотреть сообщение
видимо, каждый канал обоих цветов складываем и делим на количество цветов
Скорее, не складываем, а вычитаем, если имеется в виду, что нужно имитировать живые краски.

Старый 04.03.2011, 23:20
PHILLIPS вне форума Посмотреть профиль Отправить личное сообщение для PHILLIPS Найти все сообщения от PHILLIPS
  № 4  
Ответить с цитированием
PHILLIPS

Регистрация: Feb 2010
Сообщений: 18
Насколько я понимаю таким образом Вы предлагаете складывать?

Код AS1/AS2:
_root.fillColor = 0xFFFF00+0xFF0000;
В коде жёлтый + красный, в этом случае рисует жёлтым, т.е не получается или я не так понял.

Добавлено через 1 минуту
Цитата:
Сообщение от Stargazer Посмотреть сообщение
Скорее, не складываем, а вычитаем, если имеется в виду, что нужно имитировать живые краски.
Вот! А При вычитании: жёлтого - красный рисует зелёным =)
Буду разбираться.

Добавлено через 9 минут
Нашёл интересную статейку: http://stratum.ac.ru/textbooks/kgraf...l/addit30.html
Пишут:
Цвета одной системы являются дополнительными к другой: голубой — к красному, пурпурный — к зеленому, желтый — к синему.

Дополнительный цвет — это разность белого и данного цвета:

голубой - это белый минус красный,
пурпурный — белый минус зеленый,
желтый — белый минус синий.

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

Данный алгоритм работает! Сейчас буду искать подобный алгоритм нахождения для других цветов.

Старый 04.03.2011, 23:30
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Всё таки цвета RGB поканально складываем и делим на количество.
Вычитание будет для проходящего света, например, при расчете прозрачного светофильтра.
А для смешивания цветов при самосвечении или излучении света в отраженном белом, как в случае с "живой краской":

Код AS1/AS2:
color1 = new Color(mc1);
color1.setRGB(0xFFFF00);
color2 = new Color(mc2);
color2.setRGB(0xFF0000);
color3 = new Color(mc3); 
 
//FF = (FF + FF) / 2
//7F = (FF + 00) / 2
//00 = (00 + 00) / 2
color3.setRGB(0xFF7F00);
А еще лучше использовать метод setTransform того же класса Color, что удобнее для вычислений и гибче, поскольку можно также работать с альфой каналов. Тем более использовать в связке с getTransform, чтобы можно было "макать" в уже окрашенный объект (палитру или элемент рисунка), узнавая текущую цветовую трансформацию.
Или даже Transform.colorTransform, хотя я не уверен, с этим методом не работал.

UPD. Поправьте меня, если я не прав, сомнения что-то появились. "Оптику" я хоть и сдал на отлично, но это была "Физика" и оч.давно.
Изображения
 
__________________
Идите первым!


Последний раз редактировалось mooncar; 05.03.2011 в 02:53.
Старый 05.03.2011, 03:21
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 6  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Код AS1/AS2:
import flash.display.BitmapData;
 
var colors:Array = new Array(["0xFF0000"],["0x00FF00"],["0x0000FF"],["0xFFFF00"],["0x00FFFF"],["0xFF00FF"],["0xFFFFFF"]);
 
for (item in colors)
{
	var newColorBox:MovieClip = _root.attachMovie("colorbox","color"+item,_root.getNextHighestDepth());
		newColorBox._y = 50;
		newColorBox._x = item*(newColorBox._width + 10) + (Stage.width-(newColorBox._width + 10)*(colors.length-1))/2;
 
		color = new Color(newColorBox);
		color.setRGB(colors[item].toString(16));
 
		newColorBox.onPress = drags;
		newColorBox.onRelease = setfill;
}
 
function drags()
{
	this._alpha = 50;
	this.startDrag();
}
 
function setfill()
{
	var imageBitmap:BitmapData = new BitmapData(Stage.width,Stage.height, true, 0x00000000)
	imageBitmap.draw(_root);
 
	colormix = new Color(banka);
	colormix.setRGB("0x"+imageBitmap.getPixel(banka._x,banka._y).toString(16));
 
	this._alpha = 100;
	this.stopDrag();
}
Вложения
Тип файла: rar colormix.rar (5.3 Кб, 40 просмотров)
__________________
return this...

Старый 05.03.2011, 12:50
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 7  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
... а для CMYK? ))
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 05.03.2011, 13:41
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 8  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
mooncar, поправлю.
Вы сами пишете, что складывание происходит при излучении. А краски - это не звёзды и не лампочки, они сами по себе не излучают. Почему падающий белый, отражается от красной краски красным? Потом что краска поглощает все цвета, кроме красного. Это можно представить как "светофильтр + зеркало".

Проверку теории можно провести даже мысленно. Представьте, что у вас в руках красный, синий и зелёный фломастеры. Нарисуйте ими по очереди квадрат друг поверх друга. По вашей теории получится либо белый, либо 50% серого (я не совсем понял). Но если вы рисовали фломастерами - то помните, что на самом деле получится очень тёмное и очень грязное пятно. А если бы фломастеры были в действительности совсем непрозрачными - то мы бы получили абсолютно чёрный.


Последний раз редактировалось Stargazer; 05.03.2011 в 13:44.
Старый 06.03.2011, 20:22
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 9  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
dark256 а надо ли?)
__________________
return this...

Создать новую тему Ответ Часовой пояс 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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.