Создать более темный цвет - PullRequest
2 голосов
/ 09 ноября 2011

Я разрабатываю приложение, которое загружает динамический цвет из файла XML. В некоторых случаях мне нужно приложение, чтобы получить аналогичный, но более темный цвет от шестнадцатеричного числа, которое я имею. Каждое значение будет идти вниз 33 в шестнадцатеричном (51 в десятичном). Что-то вроде:

  1. 0xFFFFFF станет 0xCCCCCC
  2. 0x6600CC станет 0x330099

шестнадцатеричные значения, которые у меня есть, являются строками Я просто не могу понять, как решить это простым способом.

Пожалуйста, помогите!

И помните, это AS2!

1 Ответ

4 голосов
/ 09 ноября 2011

Вам следует искать одну из множества библиотек цветов. Если вы хотите сделать это самостоятельно, вам необходимо некоторое понимание побитовых операторов. Я думаю, что уменьшение цвета на несколько процентов вместо вычитания может дать вам лучший результат.

var color:int = parseInt(colorString);

// use the shift operator to get individual colour values
var red:int = (color>> 16) & 0xFF;
var green:int = (color>> 8) & 0xFF;
var blue:int = color & 0xFF;

// change colours by subtracting. Todo: make sure colours are between 0 and 255
/* 
red -= 0x33;
green -= 0x33;
blue -= 0x33; */

// make colours darker by 10%
red *= 0.9;
green *= 0.9;
blue *= 0.9;

// combine individual colours
color = (red << 16) | (green << 8) | blue;
...