Руководство по actionscript. часть 5, стр. 026

Хотя непосредственно изменить значение отдельного канала в существующем 32-битном значении цвета невозможно, мы можем достичь этого эффекта, используя комбинацию бинарных операций. Сначала мы очищаем байт нужного канала в существующем значении цвета; затем мы объединяем получившееся число с новым значением цветового канала. Эта методика продемонстрирована в следующем коде. При его выполнении создается число, которое является результатом вставки шестнадцатеричного значения АА в существующее значение цвета:

var colorValue:uint = 0xFFFFCC99; // Выбранный цвет

// Очищаем байт канала Red в исходном значении цвета и присваиваем результат // обратно переменной colorValue colorValue &= OxFFOOFFFF;

// Объединяем значение переменной colorValue с новым значением канала Red colorValue |= (0хАА«16);

trace(colorValue. toString(16)); // Выводит: ffaacc99 Внимательно посмотрите на последнюю строку кода: trace(colorValue. toString(16)); // Выводит: ffaacc99

Этот код генерирует строку в шестнадцатеричном формате для числового значения цвета, вызывая над этим значением метод toString( ) и передавая в качестве

параметра radix значение 16. Строка в шестнадцатеричном формате проще для чтения, чем ее числовой десятичный эквивалент. Тем не менее в качестве средства обеспечения удобочитаемости значения цвета метод toString( ) неидеален — он опускает ведущие нули. Например, для числа

var n:uint = 0х0000СС99;

выражение п. toString (16) вернет значение сс9 9, опустив четыре ведущих нуля. Чтобы улучшить удобочитаемость значений цветов на этапе отладки, мы можем написать собственный код, наподобие представленного в листинге 26.1. В этом листинге представлен класс Pixel, предназначенный для работы со значениями цветов. Класс Pixel помещает бинарные операции в удобные методы, например setRed ( ) и set Alpha ( ). Методы этого класса могут получать и устанавливать уровни отдельных цветовых каналов в значении цвета и генерировать строки, описывающие значения цвета с использованием различных удобочитаемых форматов. Описание класса Pixel доступно в Интернете по адресу http://www. moock. org/eas3/examples.

Листинг 26.1. Класс Pixel

package { public class Pixel { private var value:uint; // Значение цвета пиксела

public function Pixel (nl:uint, n2:int=0, n3:int=0, n4:int=0) { if (arguments. length == 1) {

value = nl; } else {

value = nl«24 | n2«16 | n3«8 | n4;

}

}

public function setAlpha (n:int):void { if (n < о 11 n > 255) { throw new RangeError(«Supplied value must be in the range 0-255.»);

}

value &= (OxOOFFFFFF); value |= (n«24);

}

public function setRed (n;int):void { if (n < 0 11 n > 255) { throw new RangeError(«Supplied value must be in the range 0-255.»);

}

value &= (OxFFOOFFFF); value |= (n«16);

}

public function setGreen (n:int):void { if (n < 0 11 n > 255) { throw new RangeError(«Supplied value must be in the range 0-255.»);

value &= (OxFFFFOOFF); value |= (n«8);

}

public function setBlue (n:int):void { if (n < 0 11 n > 255) { throw new RangeErrorC Supplied value must be in the range 0-255.»);

}

value &= (OxFFFFFFOO); value |= (n);

}

public function getAlpha ( ):int { return (value » 24) & OxFF;

}

public function getRed ( ):int { return (value » 16) & OxFF;

}

public function getGreen ( ):int { return (value » 8) & OxFF;

}

public function getBlue ( );int { return value & OxFF;

}

public function toString ( ):String { return toStringARGB( );

}

public function toStringARGB (radix:int = 16):String { var s:String =

«A:» + ((value » 24)&0xFF).toString(radix).toUpperCase( ) + » R:» + ((value » 16)&0xFF).toString(radix).toUpperCase( ) + » G:» + ((value » 8)&0xFF).toString(radix).toUpperCase( ) + » B:» + (value&OxFF).toString(radix).toUpperCase( ); return s;

}

public function toStringAlpha (radix:int = 16):String { return ((value » 24)&0xFF).toString(radix).toUpperCase( );

}

public function toStringRed (radix:int = 16):String { return ((value » 16)&0xFF).toString(radix).toUpperCase( );

}

public function toStringGreen (radix:int = 16):String { return ((value » 8)&0xFF).toString(radix).toUpperCase( );

public function toStnngBlue (radix:int = 16):String return (value&OxFF) .toStnng(radix) .toUpperCase( );

}

}

// Примеры использования:

var p:Pixel = new Pixel(0xFFFFCC99);

p. setRed(OxAA):

trace(p); // Выводит:

trace(p. getRed( )); // Выводит:

trace(p. toStringRed( )); // Выводит:

// Выбранный цвет

A:FF R:AA G:CC В:99

170

AA

var p2:Pixel = new Pixel(0×33,0×66,0×99,OxCC); trace(p2.toStringARGB(10)): // Выводит: A:51 R:102 G:153 B:204

Создание нового растрового изображения

Для создания и отображения совершенно нового растрового изображения нужно выполнить такую последовательность действий.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.14
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.50
  • 15.03.2011">Руководство по actionscript. часть 3, стр. 059
  • 01.03.2011">Руководство по actionscript. часть 5, стр. 122
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 033
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 111
  • 09.11.2011">Как нарисовать щит
  • 23.08.2011">Британский ученый призывает запретить сливочное масло.
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 077
  • 15.03.2011">Руководство по actionscript. часть 3, стр. 052
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 017
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 079
  • 27.07.2011">Флористы – художники от мира цветов
  • 06.02.2010">Вывод последней записи из твиттера
  • 14.03.2010">Логотипы. Где их искать?
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...