![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 91
|
Есть функция, которая распознает цвет пикселя под мышкой, как мне определить к светлым или темным тонам относится цвет, естественно надо программно определить?
|
|
|||||
|
Функция называется getPixel(). Возвращает целое число в формате RGB. Яркость определяют по формуле (0.2126*R) + (0.7152*G) + (0.0722*B).
|
|
|||||
|
Да, цвет под мышкой можно узнать. При клике тогда нужно отрисовать сцену в битмапДату и применить к ней метод getPixel(x,y). - выводит цвет пиксела.
Добавлено через 58 секунд Про яркость спасибо, не знал!!! |
|
|||||
|
samana, а ты знаешь как из RGB выделить отдельные цвета R,G и B?
|
|
|||||
|
Регистрация: Jan 2007
Сообщений: 91
|
Да как цвет пикселя узнать я знаю, меня именно интересует принадлежность цвета к темным оттенкам или светлым. То есть у меня есть 2 стейта объекта: черный и белый, этот объект инициализируется когда я вожу мышкой по некоторому полю, если поле имеет темный цвет, то объект принимает светлый стейт, иначе темный. Вот я хочу диапазон цветов узнать, до которого светлые, после которого темные. Как если бы взял шкалу от белого до черного и разделил бы пополам, до 50% я бы брал один стейт, после другой
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
и чем вас не устроил предложенный вариант?
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Цитата:
И просто анализировать цвет этого единственного пикселя. |
|
|||||
|
Вот код:
package { import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLRequest; public class Main extends Sprite { private var loader:Loader; public function Main() { loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.load(new URLRequest("img.jpg")); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove); } private function onMove(e:MouseEvent):void { var color:uint = (loader.content as Bitmap).bitmapData.getPixel(mouseX, mouseY); var r:uint = (color >> 16) & 0xFF; var g:uint = (color >> 8) & 0xFF; var b:uint = color & 0xFF; var light:Number = (0.2126*r) + (0.7152*g) + (0.0722*b); // от 0 черный до 255 белый if (light >= 127.5) trace("светлый"); else trace("темный"); } private function onComplete(e:Event):void { addChild(loader.content); } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:42. |
|
|
« Предыдущая тема | Следующая тема » |
|
|