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

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

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

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
Smile конвертация RGB

Здравствуйте.
нужна помощь.не смог нигде найти на форуме.
как конвертировать значение цвета полученного например через getPixel в виде 0x076678
в каналы?
то есть каналы красный, голубой и зеленый(значения от -255 до 255).

либо может я занимаюсь ерундой и вы посоветуйте что-то более дельное.
я узнаю параметры цвета для того чтобы далее этим цветом рисовать + мне этим цветом надо залить объект(кисточку).для заливки использую ColorTransform

Старый 25.07.2010, 23:57
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Типа так?
Код AS3:
      function hexToRGB(hex:uint):Object
      {
            var rgbObj:Object = {
                  red: ((hex & 0xFF0000) >> 16),
                  green: ((hex & 0x00FF00) >> 8),
                  blue: ((hex & 0x0000FF))
            };
            return rgbObj;
      }
Цитата:
Сообщение от Dezar Посмотреть сообщение
то есть каналы красный, голубой и зеленый(значения от -255 до 255).
Вообще, в http://www.adobe.com/livedocs/flash/...itmapData.html написано:
Цитата:
Each 32-bit integer is a combination of four 8-bit channel values (from 0 to 255) that describe the alpha transparency and the red, green, and blue (ARGB) values of the pixel.
Или у вас какая-то своя шкала для цветовых каналов?
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого


Последний раз редактировалось Хемуль; 26.07.2010 в 00:09.
Старый 26.07.2010, 00:24
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 3  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
про - 255 я взял из

Код:
redOffset:Number (default = 0) — The offset value for the red color channel, in the range from -255 to 255.
 
	greenOffset:Number (default = 0) — The offset value for the green color channel, in the range from -255 to 255.
 
	blueOffset:Number (default = 0) — The offset for the blue color channel value, in the range from -255 to 255.
 
	alphaOffset:Number (default = 0) — The offset for alpha transparency channel value, in the range from -255 to 255.
в любом случае.
код что вы предоставили я малость не понял

hex:uint - тут мы передаем код RGB?

этот момент
Код AS3:
red: ((hex & 0xFF0000) >> 16),
                  green: ((hex & 0x00FF00) >> 8),
                  blue: ((hex & 0x0000FF))
нельзя отобразить как-то в стиле
Код AS3:
var red:uint = и тп
?

Старый 26.07.2010, 00:36
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
А как вы из функции вернете сразу три значения? Или массив или какой-то объект всё-равно придется создавать.

Старый 26.07.2010, 00:43
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 5  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
я как раз о массиве говорю.

Старый 26.07.2010, 00:48
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Так и переделайте, вместо Object поставьте Array:
Код AS3:
      function hexToRGB(hex:uint):Array {
            var arr:Array = [((hex & 0xFF0000) >> 16),
                             ((hex & 0x00FF00) >> 8),
                             ((hex & 0x0000FF)) ]
            return arr;
      }
__________________
тут я

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

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
я малость другое имел ввиду.но в любом случае я получил ответ на главный вопрос.спасибо.

Добавлено через 1 час 26 минут
кому будет интересно я оптимизировал все вот так

Код AS3:
 
 
var red:uint = (random_color & 0xFF0000) >> 16;
var green:uint = (random_color & 0x00FF00) >> 8;
var blue:uint = (random_color & 0x0000FF);
dd.transform.colorTransform = new ColorTransform (1,1,1,1,red,green,blue);
где random_color - это grb формат (0х000000)
заливать следует черный цвет.
так как на остальных заливка идет не та, которую выбрали.

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

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

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


 


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


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