Классы Bitmap и BitmapData

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Основными классами ActionScript 3.0 для работы с растровыми изображениями являются класс Bitmap, который используется для отображения растровых изображений на экране, и класс BitmapData, который используется для доступа к данным несжатых изображений и манипуляций с ними.

Объяснение класса Bitmap

Являясь подклассом класса DisplayObject, Bitmap представляет собой основной класс ActionScript 3.0, который используется для вывода растровых изображений. Эти изображения, возможно, были загружены через класс flash.display.Loader или созданы динамически с помощью конструктора Bitmap() . При загрузке изображения из внешнего источника объект Bitmap может использовать только форматы изображения GIF, JPEG или PNG. После создания экземпляр Bitmap считается оболочкой для объекта BitmapData, который необходимо визуализировать в рабочей области. Так как экземпляр Bitmap является экранным объектом, для управления им можно использовать любые характеристики и функции экранных объектов. Дополнительную информацию о работе с экранными объектами см. в разделе Программирование отображаемого содержимого

Привязка и сглаживание пикселов

В дополнение к обычной функциональности экранных объектов класс Bitmap обладает некоторыми специфическими особенностями, относящимися к растровым изображениям.

Свойство pixelSnapping класса Bitmap определяет, привязан ли объект Bitmap к ближайшему пикселу. Это свойство принимает одну из трех констант, определенных в классе PixelSnapping: ALWAYS , AUTO или NEVER .

Ниже показан синтаксис применения привязки к пикселу:

myBitmap.pixelSnapping = PixelSnapping.ALWAYS;

Масштабирование растровых изображений часто приводит к потере четкости и искажениям. Для уменьшения искажений пользуйтесь свойством smoothing класса BitmapData. Если этому логическому свойству присвоено значение true , то при масштабировании пикселы изображения сглаживаются. Это помогает сохранить изображение более четким и естественным.

Объяснение класса BitmapData

Класс BitmapData, входящий в пакет flash.display, можно сравнить с фотоснимком пикселов загруженного или динамически созданного растрового изображения. Этот снимок представлен массивом данных о пикселах внутри объекта. Класс BitmapData также содержит ряд встроенных методов, которые могут быть полезны для создания и управления данными пикселов.

Для создания экземпляра объекта BitmapData используйте следующий код:

var myBitmap:BitmapData = new BitmapData(width:Number, height:Number, transparent:Boolean, fillColor:uinit);

Параметры width и height определяют размеры растрового изображения. Начиная с версий AIR 3 и Flash Player 11 ограничения по размеру для объекта BitmapData были удалены. Максимальный размер растрового изображения зависит от операционной системы.

В AIR 1.5 и Flash Player 10 максимальный размер объекта BitmapData составляет 8,191 пикселя в ширину или высоту, а общее количество пикселей не может превышать 16,777,215. (Т. е. если ширина объекта BitmapData составляет 8,191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину.

Параметр transparent указывает, содержит растровое изображение альфа-канал ( true ) или нет ( false ). Параметр fillColor — это 32-битная величина, задающая цвет фона и степень прозрачности (если ей присвоено значение true ). В примере ниже показано, как создать объект BitmapData с оранжевым фоном 50-процентной прозрачности:

var myBitmap:BitmapData = new BitmapData(150, 150, true, 0x80FF3300);

Для визуализации на экране вновь созданного объекта BitmapData назначьте его экземпляру Bitmap или сделайте экземпляр Bitmap его оболочкой. Для этого нужно либо передать объект BitmapData как параметр конструктора объекта Bitmap, либо назначить его свойству bitmapData существующего экземпляра Bitmap. Также необходимо добавить экземпляр растрового изображения к списку отображения, вызвав метод addChild() или addChildAt() контейнера экранного объекта, содержащего экземпляр Bitmap. Дополнительную информацию о работе со списком отображения см. в разделе Добавление экранных объектов в список отображения .

В примере ниже показано, как создавать объект BitmapData с красной заливкой и отображать его в экземпляре Bitmap:

var myBitmapDataObject:BitmapData = new BitmapData(150, 150, false, 0xFF0000); 
var myImage:Bitmap = new Bitmap(myBitmapDataObject); 
addChild(myImage);