Руководство по actionscript. часть 5, стр. 035
// Получаем значение цвета пиксела, уровень канала Alpha которого // установлен в 255, из прозрачного изображения var imgData-.BitmapData = new BitmapData(20, 20. true. OxFFFFFFFF); trace(imgData. getPixel32(0. 0)); // Выводит: 4294967295
// (исходные данные были сохранены)
Класс ColorPicker: пример использования метода getPixel32()
Теперь, когда мы понимаем, как получить значение цвета пиксела, применим наши знания в реальной ситуации. Предположим, что мы разрабатываем интернет-приложение для создания приглашений на вечеринки. Пользователи приложения сначала выбирают фотографию, которая будет помещена на приглашение, а затем задают подходящий цвет для текста приглашения. Чтобы пользователь мог поэкспериментировать с различными цветами, приложение предоставляет специальную форму для выбора цвета. Когда пользователь перемещает указатель мыши над выбранным изображением, цвет текста приглашения автоматически изменяется в соответствии с цветом пиксела, над которым в данный момент находится указатель мыши. В листинге 26.4 продемонстрирован код для палитры выбора цвета с тестовым изображением sunset. jpg. Изучите комментарии, чтобыпонять, как происходит получение значения цвета под указателем мыши.
Листинг 26.4. Палитра выбора цвета на основе изображения
package { import flash. display.*; import flash. events.*; import flash. text.*; import flash. net.*;
// Устанавливает цвет объекта TextField в соответствии с цветом
// выбранного в изображении пиксела.
public class ColorPicker extends Sprite { private var img:Bitmap; // Объект Bitmap
private var imgContainer:Sprite; // Контейнер для объекта Bitmap private var t:TextField; // Раскрашиваемый объект TextField
// Метод-конструктор
public function ColorPicker( ) {
// Создаем объект TextField и добавляем его в иерархию отображения
// объекта ColorPicker
t = new TextField( );
t. text = «Please come to my party…»;
t. autoSize = TextFieldAutoSize. LEFT;
addChild(t);
// Загружаем изображение
var loader-.Loader = new Loader ( );
1oader. contentLoaderInfо. addEventLi stener(Event. INIT,
initListener);
1oader.1oad(new URLRequest(«sunset. jpg»));
}
// Вызывается, когда инициализация изображения завершена private function initListener (e:Event):void {
// Получаем ссылку на загруженный объект Bitmap
img = е. target. content;
// Помещаем загруженное растровое изображение в объект Sprite, чтобы // мы могли реагировать на взаимодействия с мышью imgContainer = new Sprite( ); i mgConta i ner. addChi1d(i mg);
// Добавляем объект Sprite в иерархию отображения объекта ColorPicker addChild(imgContainer); imgContainer. у = 30;
// Регистрируем приемник для получения уведомлений о перемещении мыши imgContainer. addEventLi stener(MouseEvent. M0USE_M0VE, mouseMoveListener);
}
// Вызывается, когда происходит перемещение мыши над объектом Sprite. // содержащим изображение
private function mouseMoveListener (e:MouseEvent):void { // Устанавливаем цвет текста в соответствии с цветом пиксела, // находящегося в данный момент под указателем мыши
t. textColor = img. bitmapData. getPixel32(e. localX, e. localY);
}
}
}
Получение цвета области пикселов
Методыэкземпляраде1Р1хе132 ( ) иgetPixel ( ) класса BitmapData применяются для получения значения цвета отдельного пиксела. В отличие от этого, метод экземпляра getPixels ( ) класса BitmapData используется для получения значений цвета целой прямоугольной области пикселов. Метод getPixels ( ) может быть использован в любом из следующих сценариев:
? при передаче области растрового изображения между модулями программы;
? при использовании собственного алгоритма для обработки фрагмента растрового изображения;
? при отправке фрагмента или всего растрового изображения на сервер в необработанном бинарном формате.