Главная / Action Script 3
Пакетflash.display
Классpublic class BitmapData
НаследованиеBitmapData Inheritance Object
Реализует IBitmapDrawable

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Класс BitmapData позволяет работать с данными (пикселами) объекта Bitmap. Методы класса BitmapData можно использовать для создания прозрачных или непрозрачных растровых изображений произвольного размера и выполнять с ними различные операции при выполнении. Также можно обращаться к BitmapData для получения растрового изображения, загружаемого с помощью класса flash.display.Loader.

Этот класс позволяет отделить операции по визуализации растрового изображения от внутренних подпрограмм обновления отображения проигрывателя Flash Player. Путем непосредственной манипуляции объектом BitmapData можно создавать сложные изображения без необходимости постоянно перерисовывать содержимое из векторных данных в каждом кадре.

Методы класса BitmapData поддерживают эффекты, не доступные через фильтры, предусмотренные для нерастровых экранных объектов.

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

Каждое 32-разрядное целое число представляет собой комбинацию 8-разрядных значений каналов (от 0 до 255), описывающих альфа-прозрачность и значения красного, зеленого и синего (ARGB) пиксела. (Для значений ARGB наиболее значимый байт представляет значение альфа-канала, а за ним следуют красный, зеленый и синий.)

Четыре канала (альфа-канал, красный, зеленый и синий) представлены числами при использовании с методом BitmapData.copyChannel() или свойствами DisplacementMapFilter.componentX и DisplacementMapFilter.componentY, и эти числа представлены следующими константами класса BitmapDataChannel class:

Объекты BitmapData можно присоединить к объекту Bitmap с помощью свойства bitmapData объекта Bitmap.

Объект BitmapData можно использовать для заполнения объекта Graphics с помощью методаGraphics.beginBitmapFill().

Максимальная ширина и высота объекта BitmapData составляет 2880 пикселов.

Вызовы любого метода или свойства объекта BitmapData выдают ошибку ArgumentError, если объект BitmapData недействителен (например, если height == 0 и width == 0) или если он был удален с помощью метода dispose().

Посмотреть примеры

См. также

flash.display.Bitmap.bitmapData
flash.display.Graphics.beginBitmapFill()
flash.display.Loader


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  height : int
[только для чтения] Высота растрового изображения в пикселах.
BitmapData
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
  rect : Rectangle
[только для чтения] Прямоугольник, определяющий размер и расположение растрового изображения.
BitmapData
  transparent : Boolean
[только для чтения] Определяет, поддерживает ли растровое изображение попиксельную прозрачность.
BitmapData
  width : int
[только для чтения] Ширина растрового изображения в пикселах.
BitmapData
Общедоступные методы
 МетодОпределено
  
BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
Создает объект BitmapData заданной ширины и высоты.
BitmapData
  
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Создает фильтрованное изображение по исходному изображению и объекту filter.
BitmapData
  
Возвращает новый объект BitmapData, являющийся клоном исходного экземпляра с точной копией содержащегося в нем растрового изображения.
BitmapData
  
Изменяет значения цветов в заданной области растрового изображения с помощью объекта ColorTransform.
BitmapData
  
compare(otherBitmapData:BitmapData):Object
Сравнивает два объекта BitmapData.
BitmapData
  
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
Переносит данные из одного канала отдельного объекта BitmapData или текущего объекта BitmapData в канал текущего объекта BitmapData.
BitmapData
  
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
Представляет собой процедуру быстрой обработки точек изображений без растяжения, поворота и цветовых эффектов.
BitmapData
  
Очищает память, задействованную для хранения объекта BitmapData.
BitmapData
  
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Отображает исходный экранный объект поверх растрового изображения с помощью векторного средства визуализации проигрывателя Flash Player.
BitmapData
  
Заполняет прямоугольную область пикселов заданным цветом ARGB.
BitmapData
  
floodFill(x:int, y:int, color:uint):void
Выполняет операцию световой заливки изображения, начиная с точки с координатами (x, y) и заполняя область определенным цветом.
BitmapData
  
Определяет конечный прямоугольник, на который воздействует вызов метода applyFilter(), при наличии объекта BitmapData, исходного прямоугольника и объекта фильтра.
BitmapData
  
getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
Определяет прямоугольный участок, полностью охватывающий все пикселы заданного цвета в пределах растрового изображения (если параметру findColor присвоено значение true), либо полностью охватывает все пикселы, не содержащие заданный цвет (если параметру findColor присвоено значение false).
BitmapData
  
Возвращает целое число, представляющее RGB-значение пиксела из объекта BitmapData в конкретной точке (x, y).
BitmapData
  
Возвращает значение цвета ARGB, содержащее данные альфа-канала и данные RGB.
BitmapData
  
Формирует байтовый массив из прямоугольного участка пиксельных данных.
BitmapData
  
Формирует векторный массив из прямоугольного участка пиксельных данных.
BitmapData
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
  
histogram(hRect:Rectangle = null):Vector.<Vector>
Вычисление гистограммы двоичных чисел с 256 значениями для объекта BitmapData.
BitmapData
  
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Выполняет распознавание на уровне пикселов между одним растровым изображением и точкой, прямоугольником или другим растровым изображением.
BitmapData
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
  
Блокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, не обновлялись при изменении данного объекта BitmapData.
BitmapData
  
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
Проводит наложение каналов исходного изображения на целевое изображение.
BitmapData
  
noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
Заполняет изображение пикселами, представляющими собой белый шум.
BitmapData
  
paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
Переназначает значения цветовых каналов в изображении, содержащем до четырех массивов данных цветовой палитры, по одному для каждого канала.
BitmapData
  
perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Создает изображение с шумом Перлина.
BitmapData
  
pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
Выполняет растворение точек от исходного изображения до целевого или для одного изображения.
BitmapData
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
  
Прокручивает изображение на заданное число точек (x, y).
BitmapData
  
setPixel(x:int, y:int, color:uint):void
Задает одиночный пиксел объекта BitmapData.
BitmapData
  
setPixel32(x:int, y:int, color:uint):void
Задает значения цвета и альфа-прозрачности отдельно взятой точки объекта BitmapData.
BitmapData
  
setPixels(rect:Rectangle, inputByteArray:ByteArray):void
Преобразует массив байт в прямоугольный участок пиксельных данных.
BitmapData
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
  
setVector(rect:Rectangle, inputVector:Vector.<uint>):void
BitmapData
  
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
Сопоставляет пиксельные значения в изображении с заданным пороговым значением и присваивает пикселам, прошедшим проверку, новые цветовые значения.
BitmapData
 Inherited
Возвращает строковое представление заданного объекта.
Object
  
unlock(changeRect:Rectangle = null):void
Разблокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, обновлялись при изменении данного объекта BitmapData.
BitmapData
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве
heightсвойство
height:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Высота растрового изображения в пикселах.



Реализация
    public function get height():int
rectсвойство 
rect:Rectangle  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Прямоугольник, определяющий размер и расположение растрового изображения. Верхняя левая точка прямоугольника имеет значение 0; ширина и высота в пикселах равны размерам объекта BitmapData.



Реализация
    public function get rect():Rectangle
transparentсвойство 
transparent:Boolean  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Определяет, поддерживает ли растровое изображение попиксельную прозрачность. Это значение можно задавать, только когда при создании объекта BitmapData в конструкторе передается значениеtrue для параметра transparent. Затем, когда объект BitmapData создан, можно узнать, поддерживает ли он попиксельную прозрачность: для этого нужно проверить, имеет ли свойство transparent значение true.



Реализация
    public function get transparent():Boolean
widthсвойство 
width:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Ширина растрового изображения в пикселах.



Реализация
    public function get width():int
Сведения о конструкторе
BitmapData()Конструктор
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Создает объект BitmapData заданной ширины и высоты. Если задать значение для параметра fillColor, каждый пиксел растрового изображения будет окрашен в этот цвет.

По умолчанию растровое изображение создается прозрачным, если не передано значение false для параметра transparent. Создав непрозрачное растровое изображение, его нельзя сделать прозрачным. Каждый пиксел непрозрачного растрового изображения использует только 24 бита информации о цветовых каналах. Если растровое изображение определено как прозрачное, каждый пиксел использует 32 бита информации о цветовых каналах, включая канал альфа-прозрачности.

Максимальная ширина и высота объекта BitmapData составляет 2880 пикселов. Если задать значение ширины или высоты, превышающее 2880, новый экземпляр не будет создан.

Параметры
width:int — Ширина растрового изображения в пикселах.
 
height:int — Высота растрового изображения в пикселах.
 
transparent:Boolean (default = true) — Определяет, поддерживает ли растровое изображение попиксельную прозрачность. Значение по умолчанию — true (прозрачное). Чтобы создать полностью прозрачное растровое изображение, параметру transparent нужно присвоить значение true, а параметру fillColor — 0x00000000 (или 0). Если задать свойству transparent значение false, то можно незначительно улучшить производительность визуализации.
 
fillColor:uint (default = 0xFFFFFFFF) — 32-разрядное ARGB-значение цвета, используемое для заливки области растрового изображения. Значение по умолчанию — 0xFFFFFFFF (сплошной белый).

Выдает
ArgumentError — ширина и (или) высота недействительны (меньше или равны нулю, либо больше 2880)
Сведения о методе
applyFilter()метод
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Создает фильтрованное изображение по исходному изображению и объекту filter.

Этот метод базируется на поведении встроенных объектов фильтра, которые определяют целевой прямоугольник, затрагиваемый вводным исходным прямоугольником.

Полученное после применения фильтра изображение может быть больше вводного. Например, если класс BlurFilter используется, чтобы размыть очертания исходного прямоугольника с координатами (50,50,100,100) и точку назначения с координатами (10,10), то область конечного изображения будет больше (10,10,60,60) в результате размытости. Это происходит на внутреннем уровне при вызове метода applyFilter().

Если параметр sourceRect параметра sourceBitmapData является внутренней областью, например (50,50,100,100) в изображении 200 x 200, фильтр использует исходные пикселы за пределами параметра sourceRect, чтобы создать целевой прямоугольник.

Если объект BitmapData является объектом, указанным в качестве параметра sourceBitmapData, проигрыватель Flash Player использует временную копию объекта для выполнения фильтрации. Если требуется обеспечить максимальную производительность, такую ситуацию лучше избегать.

Параметры

sourceBitmapData:BitmapData — Вводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData.
 
sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
 
destPoint:Point — Точка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника.
 
filter:BitmapFilter — Объект фильтра, который будет использоваться для выполнения фильтрации. Каждый тип фильтра имеет определенные требования, приведенные ниже.
  • BlurFilter — этот фильтр может использовать и прозрачные и непрозрачные исходные и конечные изображения. Если форматы изображений не совпадают, то при сопоставлении формата конечного изображения в ходе фильтрации создается копия исходного изображения.
  • BevelFilter, DropShadowFilter, GlowFilter, ChromeFilter — конечное изображение этих фильтров должно быть прозрачным. При вызове фильтра DropShadowFilter или GlowFilter создается изображение, содержащее данные альфа-канала для тени или бликов. Он не создает тень на конечном изображении. Если использовать эти фильтры для непрозрачного конечного изображения, создается исключение (ActionScript 3.0).
  • ConvolutionFilter — этот фильтр может использовать и прозрачные и непрозрачные исходные и конечные изображения.
  • ColorMatrixFilter — этот фильтр может использовать и прозрачные и непрозрачные исходные и конечные изображения.
  • DisplacementMapFilter — этот фильтр может использовать и прозрачные и непрозрачные исходные и конечные изображения, но форматы исходного и конечного изображений должны совпадать.


Выдает
TypeError — Объекты sourceBitmapData, sourceRect, destPoint или filter имеют значение null.
 
IllegalOperationError — Прозрачность объектов BitmapData несовместима с операцией фильтрации.

См. также


Пример

В следующем примере показано применение размывающего фильтра к экземпляру BitmapData.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();
bmd.applyFilter(bmd, rect, pt, filter);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
clone()метод 
public function clone():BitmapData

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает новый объект BitmapData, являющийся клоном исходного экземпляра с точной копией содержащегося в нем растрового изображения.

Возвращает
BitmapData — Новый объект BitmapData, идентичный исходному.

Пример

В следующем примере клонируется экземпляр BitmapData и показывается, что изменение клонированного экземпляра BitmapData не затрагивает оригинал.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(100, 80, false, 0x00000000);
var bmd2:BitmapData = bmd1.clone();

bmd1.setPixel32(1, 1, 0xFFFFFFFF);

trace(bmd1.getPixel32(1, 1).toString(16)); // ffffffff
trace(bmd2.getPixel32(1, 1).toString(16)); // ff000000

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);

var bm2:Bitmap = new Bitmap(bmd2);
bm2.x = 110;
this.addChild(bm2);
colorTransform()метод 
public function colorTransform(rect:Rectangle, colorTransform:ColorTransform):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Изменяет значения цветов в заданной области растрового изображения с помощью объекта ColorTransform. Если прямоугольник соответствует границам растрового изображения, этот метод преобразует значения цветов для всего изображения.

Параметры

rect:Rectangle — Объект Rectangle, определяющий область изображения, в которой применяется объект ColorTransform.
 
colorTransform:ColorTransform — Объект ColorTransform, описывающий применяемые значения преобразования цвета.


Выдает
TypeError — Объекты rect и colorTransform имеют значение null.

См. также


Пример

В следующем примере показано применение преобразования цвета к левой половине объекта BitmapData (прямоугольнику).

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000);

var cTransform:ColorTransform = new ColorTransform();
cTransform.alphaMultiplier = 0.5
var rect:Rectangle = new Rectangle(0, 0, 40, 30);
bmd.colorTransform(rect, cTransform);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
compare()метод 
public function compare(otherBitmapData:BitmapData):Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Сравнивает два объекта BitmapData. Если два объекта BitmapData имеют одинаковые размеры (ширину и высоту), метод возвращает новый объект BitmapData, в котором каждый пиксел представляет "разницу" между пикселами двух исходных объектов.

В качестве примера рассмотрим два следующих объекта BitmapData.

  var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800);
  var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600);
  var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
  trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200
  

Примечание. Цвета, использованные для заливки двух объектов BitmapData, имеют немного разные RGB-значения (0xFF8800 и 0xCC6600). В результате использования метода compare() создается новый объект BitmapData, каждый пиксел которого показывает разницу RGB-значений между двумя растровыми изображениями.

Рассмотрим следующие два объекта BitmapData, у которых одинаковые RGB-цвета, но разные значения альфа-канала.

  var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
  var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
  var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
  trace ("0x" + diffBmpData.getPixel32(0,0).toString(16); // 0x33ffffff
  

В результате использования метода compare() создается новый объект BitmapData, каждый пиксел которого показывает разницу значений альфа-канала между двумя растровыми изображениями.

Если объекты BitmapData идентичны (имеют одинаковую высоту, ширину и значения пикселов), метод возвращает значение 0.

Если объекты BitmapData имеют разную ширину, метод возвращает значение -3.

Если объекты BitmapData имеют разную высоту, но одинаковую ширину, метод возвращает значение -4.

В следующем примере сравниваются два объекта Bitmap с разной шириной (50 и 60).

  var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000);
  var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00);
  trace(bmd1.compare(bmd2)); // -4
  

Параметры

otherBitmapData:BitmapData — Объект BitmapData, сравниваемый с исходным объектом BitmapData.

Возвращает
Object — Если два объекта BitmapData имеют одинаковые размеры (ширину и высоту), метод возвращает новый объект BitmapData с различиями между двумя объектами (см. главное обсуждение темы). Если объекты BitmapData идентичны, метод возвращает значение 0. Если объекты BitmapData имеют разную ширину, метод возвращает значение -3. Если объекты BitmapData имеют разную высоту, метод возвращает значение -4.

Выдает
TypeError — Объект otherBitmapData имеет значение null.

Пример

В следующем примере показывается значение пиксела объекта BitmapData, полученное в результате сравнения двух объектов BitmapData с одинаковыми размерами.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2));
var diffValue:String = diffBmpData.getPixel32(1, 1).toString(16);
trace (diffValue); // 33ffffff

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 60;
copyChannel()метод 
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Переносит данные из одного канала отдельного объекта BitmapData или текущего объекта BitmapData в канал текущего объекта BitmapData. Все данные в других каналах конечного объекта BitmapData сохраняются.

Исходным или конечным значением канала может быть одно из следующих:

Параметры

sourceBitmapData:BitmapData — Вводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий объект BitmapData.
 
sourceRect:Rectangle — Исходный объект Rectangle. Чтобы скопировать только данные каналов из меньшей по размеру области растрового изображения, задайте исходный прямоугольник, размер которого меньше общего размера объекта BitmapData.
 
destPoint:Point — Целевой объект Point, представляющий верхний левый угол прямоугольной области, в которую помещаются новые данные канала. Чтобы скопировать только данные канала из одной области в другую в конечном изображении, укажите другую точку вместо исходной (0,0).
 
sourceChannel:uint — Исходный канал. Используйте значение класса BitmapDataChannel (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN, BitmapDataChannel.ALPHA).
 
destChannel:uint — Целевой канал. Используйте значение класса BitmapDataChannel (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN, BitmapDataChannel.ALPHA).


Выдает
TypeError — Объекты sourceBitmapData, sourceRect и destPoint имеют значение null.

См. также


Пример

В следующем примере копируется красный канал объекта BitmapData в его собственный синий канал в области с размером 20 x 20 пикселов.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE);

var bm:Bitmap = new Bitmap(bmd);
this.addChild(bm);    
copyPixels()метод 
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Представляет собой процедуру быстрой обработки точек изображений без растяжения, поворота и цветовых эффектов. Этот метод копирует прямоугольную область исходного изображения в прямоугольную область того же размера в точке назначения конченого объекта BitmapData.

Если включены параметры alphaBitmap и alphaPoint, можно использовать вторичное изображение в качестве источника альфа-канала для исходного изображения. Если исходное изображение имеет данные альфа-канала, то для переноса пикселов из исходного изображения в конечное используются оба набора данных альфа-канала. Параметр alphaPoint — это точка на альфа-изображении, соответствующая верхнему левому углу исходного прямоугольника. Все пикселы, не находящиеся в области пересечения исходного изображения и альфа-изображения, не копируются в конечное изображение.

Свойство mergeAlpha контролирует, используется или нет альфа-канал при копировании одного прозрачного изображения в другое прозрачное изображение. Чтобы копировать пикселы с данными альфа-канала, задайте свойству mergeAlpha значение true. По умолчанию свойство mergeAlpha имеет значение false.

Параметры

sourceBitmapData:BitmapData — Вводное растровое изображение, из которого копируются пикселы. Исходным изображением может быть другой экземпляр BitmapData, или оно может ссылаться на текущий экземпляр BitmapData.
 
sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
 
destPoint:Point — Точка назначения, представляющая верхний левый угол прямоугольной области, в которую помещаются новые пикселы канала.
 
alphaBitmapData:BitmapData (default = null) — Вторичный источник альфа-канала объекта BitmapData.
 
alphaPoint:Point (default = null) — Точка в источнике альфа-канала объекта BitmapData, соответствующая верхнему левому углу параметра sourceRect.
 
mergeAlpha:Boolean (default = false) — Чтобы использовать альфа-канал, нужно задать значение true. Чтобы копировать пикселы без альфа-канала, нужно задать значение false.


Выдает
TypeError — Объекты sourceBitmapData, sourceRect и destPoint имеют значение null.

Пример

В следующем примере копируются пикселы из области 20 х 20 пикселов одного объекта BitmapData в другой объект BitmapData.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF);
var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd2.copyPixels(bmd1, rect, pt);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 50;
dispose()метод 
public function dispose():void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Очищает память, задействованную для хранения объекта BitmapData.

Когда для изображения вызывается метод dispose(), его ширина и высота получают значение 0. Все последующие вызовы методов и свойств данного экземпляра BitmapData заканчиваются неудачно и приводят к появлению исключения.


Пример

В следующем примере показан результат вызова метода объекта BitmapData после вызова метода dispose() (выдается исключение).
import flash.display.BitmapData;

var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF);
trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF

myBitmapData.dispose();
try {
    trace(myBitmapData.getPixel(1, 1));
} catch (error:Error) {
    trace(error); // ArgumentError
}
draw()метод 
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Отображает исходный экранный объект source поверх растрового изображения с помощью векторного средства визуализации проигрывателя Flash Player. Можно задать параметры matrix, colorTransform, blendMode и clipRect назначения, чтобы управлять процессом визуализации. Также можно указать, должно ли смягчаться растровое изображение при масштабировании (это применимо только если источником является объект BitmapData).

Этот метод напрямую соответствует тому, как рисуются объекты с помощью стандартного векторного средства визуализации в интерфейсе инструмента разработки.

Исходный экранный объект не использует свои примененные преобразования для этого вызова. Он обрабатывается в том виде, в котором представлен в библиотеке или файле: без преобразования матрицы, цвета и без режима наложения. Чтобы нарисовать экранный объект (например, фрагмент ролика) с помощью его собственных свойств преобразования, можно скопировать его объект свойства transform в свойство transform объекта Bitmap, использующего объект BitmapData.

Примечание. Объект source и (в случае с объектами Sprite и MovieClip) все его дочерние объекты должны находиться в том же домене, что и вызывающий объект, или в SWF-файле, доступном вызывающему объекту посредством вызова метода Security.allowDomain(). Если эти условия не соблюдаются, метод draw() ничего не рисует.

Этот метод поддерживается через RTMP в Flash Player 9.0.115.0 и более поздних версий. Можно контролировать потоки на сервере Flash Media Server в сценарии, выполняемом на стороне сервера. Дополнительные сведения см. в разделах о свойствах Client.audioSampleAccess и Client.videoSampleAccess в документе Ссылка на языке ActionScript на стороне сервера для Adobe Flash Media Server.

Параметры

source:IBitmapDrawable — Экранный объект или объект BitmapData для рисования объекта BitmapData. Классы DisplayObject и BitmapData реализуют интерфейс IBitmapDrawable.
 
matrix:Matrix (default = null) — Объект Matrix, используемый для масштабирования, поворота и перемещения координат растрового изображения. Если не требуется применять преобразование матрицы в изображение, задайте для этого параметра идентификационную матрицу, созданную с помощью конструктора new Matrix() по умолчанию, или передайте значение null.
 
colorTransform:ColorTransform (default = null) — Объект ColorTransform, используемый для настройки значений цвета растрового изображения. Если объект не указан, цвета растрового изображения не преобразуются. Если вам необходимо передать этот параметр, но преобразовывать изображение не нужно, задайте для него объект ColorTransform, созданный с помощью конструктора new ColorTransform() по умолчанию.
 
blendMode:String (default = null) — Строковое значение класса flash.display.BlendMode, задающее режим наложения, которые будет применен к полученному растровому изображению.
 
clipRect:Rectangle (default = null) — Объект Rectangle, определяющий для рисования область исходного объекта. Если это значение не задано, то обрезка не производится и исходный объект рисуется полностью.
 
smoothing:Boolean (default = false) — Логическое значение, которое определяет, будет ли объект BitmapData смягчаться при масштабировании или повороте вследствие масштабирования или поворота в параметре matrix. Параметр smoothing применяется, только если параметром source является объект BitmapData. Если smoothing имеет значение false, повернутое или масштабированное изображение BitmapData может получиться нечетким или с зазубренными очертаниями. Например в следующих двух изображениях в качестве параметра source используется один и тот же объект BitmapData, но для левого параметр smoothing имеет значение true, а для правого — false.

Два изображения: левое со смягчением и правое без смягчения.

Рисование с параметром smoothing в значении true требует больше времени, чем со smoothing в значении false.


Выдает
ArgumentError — Параметр source не является объектом BitmapData или DisplayObject.
 
SecurityError — Объект source и (в случае с объектами Sprite и MovieClip) все его дочерние объекты находятся не в том же домене, что и вызывающий объект, или не находятся в SWF-файле, доступном вызывающему объекту посредством вызова метода Security.allowDomain().
 
ArgumentError — Источник имеет значение null или не является действительным объектом IBitmapDrawable.

См. также


Пример

В следующем примере рисуется объект TextField в объекте BitmapData.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;

var tf:TextField = new TextField();
tf.text = "bitmap text";

var myBitmapData:BitmapData = new BitmapData(80, 20);
myBitmapData.draw(tf);
var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);
fillRect()метод 
public function fillRect(rect:Rectangle, color:uint):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Заполняет прямоугольную область пикселов заданным цветом ARGB.

Параметры

rect:Rectangle — Прямоугольная область для заливки.
 
color:uint — Цвет ARGB для заливки области. Цвета ARGB часто указываются в шестнадцатеричном формате, например 0xFF336699.


Выдает
TypeError — Объект rect имеет значение null.

См. также


Пример

В следующем примере прямоугольная область объекта BitmapData заливается синим цветом:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x0000FF);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);
floodFill()метод 
public function floodFill(x:int, y:int, color:uint):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Выполняет операцию заливки изображения, начиная с точки с координатами (x, y) и заполняя область определенным цветом. Метод floodFill() напоминает инструмент "Ведро с краской" в различных программах для рисования. Цвет представляет собой цвет ARGB, содержащий информацию альфа-канала и данные цвета.

Параметры

x:int — Координата x изображения.
 
y:int — Координата у изображения.
 
color:uint — Цвет ARGB для заливки.


Пример

В следующем примере заливается область объекта BitmapData, то есть, область вокруг пиксела в точке с координатами (10, 10), в которой все цвета граничат с цветом в данной точки — с красным.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x000000FF);
rect = new Rectangle(15, 15, 25, 25);
myBitmapData.fillRect(rect, 0x000000FF);

myBitmapData.floodFill(10, 10, 0x00FF0000);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);
generateFilterRect()метод 
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Определяет целевой прямоугольник, на который воздействует вызов метода applyFilter(), при наличии объекта BitmapData, исходного прямоугольника и объекта фильтра.

Например, размывающий фильтр обычно воздействует на область, размер которой превышает размер исходного изображения. Изображение размером 100 x 200 пикселов, отфильтрованное с использованием экземпляра BlurFilter по умолчанию, где blurX = blurY = 4 создает целевой прямоугольник с координатами (-2,-2,104,204). Метод generateFilterRect() позволяет заранее определять размер целевого прямоугольника, чтобы соответствующим образом изменить его размеры перед применением фильтра.

Некоторые фильтры обрезают целевой прямоугольник по размеру исходного изображения. Например, внутренний фильтр DropShadow не увеличивает размер по сравнению с исходным изображением. В данном API-интерфейсе объект BitmapData используется в качестве исходных границ, а не исходного параметра rect.

Параметры

sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
 
filter:BitmapFilter — Объект фильтра, используемый для вычисления конечного прямоугольника.

Возвращает
Rectangle — Целевой прямоугольник, вычисленный с использованием изображения, параметра sourceRect и фильтра.

Выдает
TypeError — Объекты sourceRect и filter имеют значение null.

Пример

В следующем примере метод generateFilterRect() используется для определения прямоугольной области, которую будет занимать изображение после применения размывающего фильтра. Результаты метода generateFilterRect() выводятся с помощью функции trace().

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();

trace(bmd.generateFilterRect(rect, filter));
// (x=8, y=8, w=44, h=14)

bmd.applyFilter(bmd, rect, pt, filter);
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
Обратите внимание, что метод generateFilterRect() не применяет фильтр. Вызовите метод applyFilter(), чтобы применить фильтр.
getColorBoundsRect()метод 
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Определяет прямоугольный участок, полностью охватывающий все пикселы заданного цвета в пределах растрового изображения (если параметру findColor присвоено значение true), либо полностью охватывает все пикселы, не содержащие заданный цвет (если параметру findColor присвоено значение false).

Например, если имеется исходное изображение и требуется определить прямоугольник изображения, содержащий ненулевой альфа-канал, передайте в качестве параметров {mask: 0xFF000000, color: 0x00000000}. Если параметру findColor задано значение true, в пределах всего изображения ведется поиск границ с пикселами, для которых (value & mask) == color (где value — это значение цвета пиксела). Если параметру findColor задано значение false, в пределах всего изображения ведется поиск границ пикселов, для которых (value & mask)!= color (где value — это значение цвета пиксела). Чтобы определить белое пространство вокруг изображения, передайте {mask: 0xFFFFFFFF, color: 0xFFFFFFFF}, чтобы найти границы небелых пикселов.

Параметры

mask:uint — Шестнадцатеричное значение, указывающее рассматриваемые биты цвета ARGB. Значение цвета объединяется с данным шестнадцатеричным значением с использованием оператора & (побитовое И).
 
color:uint — Шестнадцатеричное значение, задающее цвет ARGB для соответствия (если findColor имеет значение true) или не соответствия (если findColor имеет значение false).
 
findColor:Boolean (default = true) — Если задано значение true, то возвращаются границы значения цвета в изображения. Если задано значение false, возвращаются границы области изображения, в которой этого цвета нет.

Возвращает
Rectangle — Область изображения, заполненная заданным цветом.

Пример

В следующем примере создается объект BitmapData с красным цветом в верхней половине пикселов. Затем вызывается метод getColorBoundsRect() для определения прямоугольника, содержащего красные пикселы (0xFF0000), после чего тот же метод вызывается для определения прямоугольника, пикселы которого не красные (параметру findColor задается значение false.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF);
var rect:Rectangle = new Rectangle(0, 0, 80, 20);
bmd.fillRect(rect, 0xFF0000);

var maskColor:uint = 0xFFFFFF; 
var color:uint = 0xFF0000;  
var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true);
trace(redBounds); // (x=0, y=0, w=80, h=20)

var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false);
trace(notRedBounds); // (x=0, y=20, w=80, h=20)

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
getPixel()метод 
public function getPixel(x:int, y:int):uint

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает целое число, представляющее RGB-значение пиксела из объекта BitmapData в конкретной точке (x, y). Метод getPixel() возвращает неумноженное значение пиксела. Информация альфа-канала не возвращается.

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

Параметры

x:int — Положение пиксела по оси x.
 
y:int — Положение пиксела по оси у.

Возвращает
uint — Число, представляющее RGB-значение пиксела. Если координаты (x, y) находятся за пределами изображения, метод возвращает 0.

См. также


Пример

В следующем примере объект BitmapData заливается красным, а с помощью метода getPixel() определяется значение цвета для верхнего левого пиксела.
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000);

var pixelValue:uint = bmd.getPixel(1, 1);
trace(pixelValue.toString(16)); // ff0000;
getPixel32()метод 
public function getPixel32(x:int, y:int):uint

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает значение цвета ARGB, содержащее данные альфа-канала и данные RGB. Этот метод подобен методу getPixel(), который возвращает RGB-цвет без данных альфа-канала.

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

Параметры

x:int — Положение пиксела по оси x.
 
y:int — Положение пиксела по оси у.

Возвращает
uint — Число, представляющее значение пиксела ARGB. Если координаты (x, y) находятся за пределами изображения, возвращается значение 0.

См. также


Пример

В следующем примере создается объект BitmapData, залитый цветом, а затем с помощью метода getPixel32() определяется значение цвета в верхнем левом пикселе, после чего определяются шестнадцатеричные значения для каждого компонента цвета (альфа-канал, красный, зеленый и синий).

import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC);

var pixelValue:uint = bmd.getPixel32(1, 1);
var alphaValue:uint = pixelValue >> 24 & 0xFF;
var red:uint = pixelValue >> 16 & 0xFF;
var green:uint = pixelValue >> 8 & 0xFF;
var blue:uint = pixelValue & 0xFF;

trace(alphaValue.toString(16)); // ff
trace(red.toString(16)); // 44
trace(green.toString(16)); // aa
trace(blue.toString(16)); // cc
getPixels()метод 
public function getPixels(rect:Rectangle):ByteArray

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Формирует байтовый массив из прямоугольного участка пиксельных данных. Записывает неподписанное целое число (32-разрядное неумноженное значение пиксела) для каждого пиксела в байтовом массиве.

Параметры

rect:Rectangle — Прямоугольная область в текущем объекте BitmapData.

Возвращает
ByteArray — Объект ByteArray, представляющий пикселы в данном объекте Rectangle.

Выдает
TypeError — Объект rect имеет значение null.

См. также


Пример

В следующем примере создается объект BitmapData, заполненный пикселами, образующими белый шум, а затем с помощью метода getPixels() объект ByteArray заполняется пиксельными значениями объекта BitmapData.
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;

var bmd:BitmapData = new BitmapData(80, 40, true);
var seed:int = int(Math.random() * int.MAX_VALUE);
bmd.noise(seed);

var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
var pixels:ByteArray = bmd.getPixels(bounds);
getVector()метод 
public function getVector(rect:Rectangle):Vector.<uint>

Язык версии : ActionScript 3.0
Версии среды выполнения:  10, 1.5

Формирует векторный массив из прямоугольного участка пиксельных данных. Возвращает объект Vector беззнаковых целых чисел (32-разрядное неумноженное пиксельное значение) для заданного прямоугольника.

Параметры

rect:Rectangle — Прямоугольная область в текущем объекте BitmapData.

Возвращает
Vector.<uint> — Объект Vector, представляющий указанный прямоугольник.

Выдает
TypeError — Объект rect имеет значение null.
histogram()метод 
public function histogram(hRect:Rectangle = null):Vector.<Vector>

Язык версии : ActionScript 3.0
Версии среды выполнения:  10, 1.5

Вычисление гистограммы двоичных чисел с 256 значениями для объекта BitmapData. Этот метод возвращает объект Vector, содержащий четыре вектора.Экземпляры <Number> (четыре объекта Vector, содержащие объекты Number). Четыре экземпляра Vector представляют красный, зеленый, синий и альфа компоненты по порядку. Каждый экземпляр Vector содержит 256 значений, которые представляют распространение отдельного значения компонента: от 0 до 255.

Параметры

hRect:Rectangle (default = null) — Используемая область объекта BitmapData.

Возвращает
Vector.<Vector>
hitTest()метод 
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

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

Если изображение непрозрачное, то при использовании данного метода оно считается полностью непрозрачным прямоугольником. Для тестирования нажатия, при котором учитывается прозрачность, оба изображения должны быть прозрачными. Когда тестируются два прозрачных изображения, параметры порога значений альфа-канала контролируют, какие значения альфа-канала (от 0 до 255) считаются непрозрачными.

Параметры

firstPoint:Point — Положение верхнего левого угла изображения BitmapData в произвольном координатном пространстве. То же координатное пространство используется при определении параметра secondBitmapPoint.
 
firstAlphaThreshold:uint — Самое низкое значение альфа-канала, рассматриваемое как непрозрачное, для данной проверки попадания.
 
secondObject:Object — Объект Rectangle, Point, Bitmap или BitmapData.
 
secondBitmapDataPoint:Point (default = null) — Точка, определяющая местоположение пиксела во втором объекте BitmapData. Используйте этот параметр, только когда значением secondObject является объект BitmapData.
 
secondAlphaThreshold:uint (default = 1) — Самое низкое значение альфа-канала, рассматриваемое как непрозрачное во втором объекте BitmapData. Используйте этот параметр, только когда значением secondObject является BitmapData и оба объекта BitmapData прозрачные.

Возвращает
Boolean — Имеет значение true при наличии совпадений; в противном случае — false.

Выдает
ArgumentError — Параметр secondObject не является объектом Point, Rectangle, Bitmap или BitmapData.
 
TypeError — Объект firstPoint имеет значение null.

Пример

В следующем примере создается объект BitmapData, являющийся непрозрачным только в прямоугольной области с координатами (20, 20, 40, 40), и вызывается метод hitTest() с объектом Point в качестве secondObject. При первом вызове объект Point определяет верхний левый угол объекта BitmapData, который является прозрачным, а при втором вызове объект Point определяет центр объекта BitmapData, который является непрозрачным.
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000);
var rect:Rectangle = new Rectangle(20, 20, 40, 40);
bmd1.fillRect(rect, 0xFF0000FF);

var pt1:Point = new Point(1, 1);
trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false
var pt2:Point = new Point(40, 40);
trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
lock()метод 
public function lock():void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Блокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, не обновлялись при изменении данного объекта BitmapData. Чтобы повысить производительность, используйте этот метод вместе с методом unlock() до или после многочисленных вызовов метода setPixel() или setPixel32().

См. также


Пример

В следующем примере создается объект BitmapData на базе свойства bitmapData объекта Bitmap с именем picture. Затем вызывается метод lock() перед вызовом сложной пользовательской функции, complexTransformation(), изменяющей объект BitmapData. (Объект picture и функция complexTransformation() в этом примере не определяются.) Даже если функция complexTransformation() обновляет свойство bitmapData объекта picture, изменения не отображаются, пока код не вызовет метод unlock() объекта bitmapData.
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;
merge()метод 
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Проводит наложение каналов исходного изображения на целевое изображение. Для каждого канала и каждого пиксела вычисляется новое значение на основе значений каналов исходных и целевых пикселов. Например, в красном канале новое значение вычисляется следующим образом (где redSrc — это значение красного канала для пиксела в исходном изображении, а redDest — это значение красного канала в соответствующем пикселе целевого изображения):

new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;

Значения redMultiplier, greenMultiplier, blueMultiplier и alphaMultiplier являются множителями, используемыми для канала каждого цвета. Используйте шестнадцатеричное значение от 0 до 0x100 (256), где 0 обозначает, что в результате используется полное значение целевого изображения, а 0x100 — что используется полное значение исходного изображения, а промежуточные числа означают, что используется наложение (так 0x80 указывает на 50-процентное наложение).

Параметры

sourceBitmapData:BitmapData — Вводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий объект BitmapData.
 
sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
 
destPoint:Point — Точка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника.
 
redMultiplier:uint — Шестнадцатеричное значение, на которое будет умножаться значение красного канала.
 
greenMultiplier:uint — Шестнадцатеричное значение, на которое будет умножаться значение зеленого канала.
 
blueMultiplier:uint — Шестнадцатеричное значение, на которое будет умножаться значение синего канала.
 
alphaMultiplier:uint — Шестнадцатеричное значение, на которое будет умножаться значение альфа-канала.


Выдает
TypeError — Объекты sourceBitmapData, sourceRect и destPoint имеют значение null.

Пример

В следующем примере создаются два объекта BitmapData. Размер обоих составляет 100 х 80 пикселов. Первый объект заливается зеленым цветом, а второй — красным. Код вызывает метод merge(), накладывающий пикселы второго объекта BitmapData на первый объект BitmapData, но только в заданной прямоугольной области:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00);
var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000);
var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(20, 20);
var mult:uint = 0x80; // 50% 
bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;
noise()метод 
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Заполняет изображение пикселами, представляющими собой белый шум.

Параметры

randomSeed:int — Начальное значение, используемое для создания случайных чисел. Если не изменять остальных параметров, можно создавать различные псевдослучайные результаты, изменяя начальное значение случайной последовательности. Функция шума является функцией наложения, а не настоящей функцией создания случайных чисел, поэтому при использовании одного и того же начального числа она каждый раз дает одинаковые результаты.
 
low:uint (default = 0) — Самое низкое значение для создания случайных чисел для каждого канала (от 0 до 255).
 
high:uint (default = 255) — Самое высокое значение для создания случайных чисел для каждого канала (от 0 до 255).
 
channelOptions:uint (default = 7) — Число, которое может представлять собой любую комбинацию значений четырех каналов цвета (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN и BitmapDataChannel.ALPHA). Можно использовать логический оператор ИЛИ (|) для комбинирования значений каналов.
 
grayScale:Boolean (default = false) — Логическое значение. Если имеет значение true, создается изображение с использованием серой шкалы путем присвоения всем цветовым каналам одного и того же значения. На значение альфа-канала не воздействует задание значения true для этого параметра.

См. также


Пример

В следующем примере создается два объекта BitmapData и для каждого из них вызывается метод noise(). Однако параметру grayscale задано значение false для вызова метода noise() первого объекта и true для вызова метода noise() второго объекта.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;

var bmd1:BitmapData = new BitmapData(80, 80);
var bmd2:BitmapData = new BitmapData(80, 80);

var seed:int = int(Math.random() * int.MAX_VALUE);
bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false);
bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 90;
paletteMap()метод 
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Переназначает значения цветовых каналов в изображении, содержащем до четырех массивов данных цветовой палитры, по одному для каждого канала.

Проигрыватель Flash Player выполняет следующие шаги для создания конечного изображения:

  1. После вычисления значения красного, зеленого, синего и альфа-каналов складываются, образуя стандартное 32-разрядное целое число.
  2. Значения красного, зеленого, синего и альфа-каналов каждого пиксела извлекаются в отдельные значения от 0 до 255. Эти значения используются для поиска новых значений цвета в соответствующем массиве: redArray, greenArray, blueArray и alphaArray. Каждый из этих четырех массивов должен содержать 256 значений.
  3. После получения новых значений для всех четырех каналов, они образуют стандартное значение ARGB, которое применяется к пикселу.

Этот метод может поддерживать эффекты, создаваемые с использованием разных каналов. Каждый вводный массив содержит полные 32-разрядные значения, поэтому при складывании значений не происходит смещения. Эта подпрограмма не поддерживает фиксацию по каналам.

Если для канала не задан массив, то канал цвета копируется из исходного изображения в целевое.

Этот метод можно использовать для самых разнообразных эффектов, таких как общее наложение палитры (преобразование одного канала для создания псевдо-цветного изображения). Этот метод можно использовать для различных расширенных алгоритмов манипуляций с цветом, таких как использование гаммы, кривых, уровней и квантизации.

Параметры

sourceBitmapData:BitmapData — Вводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData.
 
sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
 
destPoint:Point — Точка в целевом изображении (текущем объекте BitmapData), соответствующая правому левому углу исходного прямоугольника.
 
redArray:Array (default = null) — Если redArray не имеет значение null, красный = redArray[исходное значение красного], в противном случае красный = исходное значение красного.
 
greenArray:Array (default = null) — Если greenArray не имеет значение null, зеленый = greenArray[исходное значение зеленого], в противном случае зеленый = исходное значение зеленого.
 
blueArray:Array (default = null) — Если blueArray не имеет значение null, синий = blueArray[исходное значение синего], в противном случае синий = исходное значение синего.
 
alphaArray:Array (default = null) — Если alphaArray не имеет значение null, альфа = alphaArray[исходное значение альфа-канала], в противном случае альфа = исходное значение альфа-канала.


Выдает
TypeError — Объекты sourceBitmapData, sourceRect и destPoint имеют значение null.

Пример

В следующем примере создается зеленый объект BitmapData с красным квадратом по центру, а затем вызывается метод paletteMap(), чтобы поменять местами красный и зеленый в нижней прямоугольной области объекта BitmapData.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000);
myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00);

var redArray:Array = new Array(256);
var greenArray:Array = new Array(256);

for(var i:uint = 0; i < 255; i++) {
    redArray[i] = 0x00000000;
    greenArray[i] = 0x00000000;
}

redArray[0xFF] = 0x0000FF00;
greenArray[0xFF] = 0x00FF0000;

var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40);
var pt:Point = new Point(0, 0);
myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray);

var bm1:Bitmap = new Bitmap(myBitmapData);
addChild(bm1);
perlinNoise()метод 
public function perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void

Версии среды выполнения:  1.0 9

Создает изображение с шумом Перлина.

Алгоритм создания шума Перлина интерполирует и объединяет отдельные функции случайного шума (называемые октавами) в одну функцию, создающую более естественный случайный шум. Как и в музыкальных октавах, каждая функция октавы удваивает частоту предыдущей. Шум Перлина описывается как "фрактальная сумма шума", так как он объединяет несколько наборов шумовых данных с разным уровнем детализации.

Функции шума Перлина можно использовать для симуляции естественных явлений и ландшафтов, таких как текстура древесины, облака и горные хребты. В большинстве случаев результат функции шума Перлина не отображается непосредственно: он используется для доработки других изображений, придавая им псевдослучайные вариации.

Простые функции цифрового белого шума часто дают изображения с резко контрастирующими точками. Такое явление редко встречается в естественных условиях. Алгоритм шума Перлина объединяет несколько функций шума с разным уровнем детализации. В результате чего разница между значениями соседних пикселов становится не столь большой.

Примечание. Алгоритм шума Перлина назван в честь Кена Перлина, который создал его, работая над компьютерной графикой для фильма Tron в 1982 году. В 1997 году Перлин получил премию Американской академии киноискусств за технические достижения.

Параметры

baseX:Number — Частота, используемая по оси x. Например, чтобы создать объект с шумом для изображения размером 64 x 128, передайте 64 для значения baseX.
 
baseY:Number — Частота для использования в направлении у. Например, чтобы создать объект с шумом для изображения размером 64 x 128, передайте 128 для значения baseY.
 
numOctaves:uint — Количество октав или индивидуальных функций шума, которые необходимо объединить с целью создания шума. Чем больше октав, тем более детальное изображение создается. Также чем больше октав, тем больше времени требуется на обработку.
 
randomSeed:int — Начальное значение, используемое для создания случайных чисел. Если не изменять остальных параметров, можно создавать различные псевдослучайные результаты, изменяя начальное значение случайной последовательности. Функция шума Перлина является функцией наложения, а не настоящей функцией создания случайных чисел, поэтому при использовании одного и того же начального числа она каждый раз дает одинаковые результаты.
 
stitch:Boolean — Логическое значение. При значении true метод пытается смягчить края перехода изображения, чтобы создать бесшовную текстуру для мозаичной заливки растровым изображением.
 
fractalNoise:Boolean — Логическое значение. При значении true метод создает фрактальный шум, в противном случае создается турбулентность. Изображение с турбулентностью имеет видимые прерывания градиента, благодаря чему оно больше подходит для более резких визуальных эффектов, например для создания языков пламени или морских волн.
 
channelOptions:uint (default = 7) — Число, которое может представлять собой любую комбинацию значений четырех каналов цвета (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN и BitmapDataChannel.ALPHA). Можно использовать логический оператор ИЛИ (|) для комбинирования значений каналов.
 
grayScale:Boolean (default = false) — Логическое значение. При значении true создается изображение с использованием серой шкалы путем присвоения каналам красного, зеленого и синего цветов идентичных значений. Значение альфа-канала остается без изменений, если данному параметру задано значение true.
 
offsets:Array (default = null) — Массив точек, соответствующий смещениям в направлениях x и y для каждой октавы. Изменяя значения смещения, можно плавно прокручивать слои изображения с шумом Перлина. Каждая точка в массиве смещения применяется к функции шума конкретной октавы.


Пример

В следующем примере создается объект BitmapData 200 х 200 пикселов, который вызывает метод perlinNoise() для создания эффекта красной и синей акварели.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC);

var seed:Number = Math.floor(Math.random() * 10);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
pixelDissolve()метод 
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Выполняет растворение точек от исходного изображения до целевого или для одного изображения. Проигрыватель Flash Player использует значение randomSeed для выполнения случайного растворения точек. Возвращаемое значение функции должно передаваться при последующих вызовах для продолжения растворения точек вплоть до завершения операции.

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

Если исходное и целевое изображения одинаковы, пикселы заполняются с помощью параметра color. Этот процесс позволяет выполнить растворение из заполненного изображения. В данном режиме целевой параметр point игнорируется.

Параметры

sourceBitmapData:BitmapData — Вводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData.
 
sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
 
destPoint:Point — Точка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника.
 
randomSeed:int (default = 0) — Начальное значение случайного числа, используемое для начала растворения точек.
 
numPixels:int (default = 0) — По умолчанию составляет 1/30 исходной области (ширина x высота).
 
fillColor:uint (default = 0) — Значение цвета ARGB, используемое для заливки пикселов, для которых исходное значение равно целевому.

Возвращает
int — Новое начальное значение случайного числа для последующих вызовов.

Выдает
TypeError — Объекты sourceBitmapData, sourceRect и destPoint имеют значение null.
 
TypeError — numPixels имеет отрицательное значение.

Пример

В следующем примере метод pixelDissolve() используется для преобразования серого объекта BitmapData в красный: одновременно растворяется по 40 пикселов до тех пор, пока не будет изменен цвет всех пикселов.
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.Timer;
import flash.events.TimerEvent;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);
var bitmap:Bitmap = new Bitmap(bmd);
addChild(bitmap);

var tim:Timer = new Timer(20);
tim.start();
tim.addEventListener(TimerEvent.TIMER, timerHandler);
 
function timerHandler(event:TimerEvent):void {
    var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE);
    dissolve(randomNum);
}

function dissolve(randomNum:Number):void {
    var rect:Rectangle = bmd.rect;
    var pt:Point = new Point(0, 0);
    var numberOfPixels:uint = 100;
    var red:uint = 0x00FF0000;
    bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red);
    var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true);
    if(grayRegion.width == 0 && grayRegion.height == 0 ) {
        tim.stop();
    }
}
scroll()метод 
public function scroll(x:int, y:int):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Прокручивает изображение на заданное число точек (x, y). Края за пределами области прокрутки остаются без изменений.

Параметры

x:int — Число точек для прокрутки по горизонтали.
 
y:int — Число точек для прокрутки по вертикали.


Пример

В следующем примере показывается эффект прокрутки объекта BitmapData на 40 пикселов вправо.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);
var rect:Rectangle = new Rectangle(0, 0, 40, 40);
bmd.fillRect(rect, 0xFFFF0000);
            
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

trace (bmd.getPixel32(50, 20).toString(16)); // ffcccccccc

bmd.scroll(30, 0); 

trace (bmd.getPixel32(50, 20).toString(16)); // ffff0000
setPixel()метод 
public function setPixel(x:int, y:int, color:uint):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Задает одиночный пиксел объекта BitmapData. При выполнении этой операции сохраняется текущее значение альфа-канала пиксела изображения. Значение параметра RGB-цвета обрабатывается как неумноженное значение цвета.

Примечание. Для повышения производительности при многократном использовании метода setPixel() или setPixel32() вызовите метод lock() перед тем, как вызывать setPixel() или setPixel32(), а по завершении внесения изменений в пикселы, вызовите метод unlock(). Эта процедура не позволяет объектам, ссылающимся на данный экземпляр BitmapData, обновляться, пока не будет завершено изменение пикселов.

Параметры

x:int — Положение по оси x пиксела, значение которого меняется.
 
y:int — Положение по оси у пиксела, значение которого меняется.
 
color:uint — Полученный RGB-цвет пиксела.

См. также


Пример

В следующем примере с помощью метода setPixel() рисуется красная линия в объекте BitmapData.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0xFF0000;
    bmd.setPixel(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
setPixel32()метод 
public function setPixel32(x:int, y:int, color:uint):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Задает значения цвета и альфа-прозрачности отдельно взятой точки объекта BitmapData. Этот метод поход на метод setPixel(). Основное различие заключается в том, что метод setPixel32() принимает ARGB-значение цвета, содержащее информацию об альфа-канале.

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

Примечание. Для повышения производительности при многократном использовании метода setPixel() или setPixel32() вызовите метод lock() перед тем, как вызывать setPixel() или setPixel32(), а по завершении внесения изменений в пикселы, вызовите метод unlock(). Эта процедура не позволяет объектам, ссылающимся на данный экземпляр BitmapData, обновляться, пока не будет завершено изменение пикселов.

Параметры

x:int — Положение по оси x пиксела, значение которого меняется.
 
y:int — Положение по оси у пиксела, значение которого меняется.
 
color:uint — Полученный ARGB-цвет пиксела. Если растровое изображение непрозрачное, то альфа-составляющая значения цвета игнорируется.

См. также


Пример

В следующем примере с помощью метода setPixel32() рисуется прозрачная красная линия в объекте BitmapData (значение альфа-канала = 0х60).

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0x60FF0000;
    bmd.setPixel32(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
setPixels()метод 
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Преобразует массив байт в прямоугольный участок пиксельных данных. Для каждого пиксела вызывается метод ByteArray.readUnsignedInt() и записывается возвращаемое значение. Если массив байт заканчивается, прежде чем будет заполнен весь прямоугольник, функция возвращает исключение. Массив байт должен содержать 32-разрядные ARGB-значения пикселов. Перед считыванием пикселов и после него поиск по массиву байт не выполняется.

Параметры

rect:Rectangle — Задает прямоугольную область объекта BitmapData.
 
inputByteArray:ByteArray — Объект ByteArray состоит из 32-разрядных неумноженных пиксельных значений, которые должны использоваться в прямоугольной области.


Выдает
EOFError — Объект inputByteArray не содержит достаточно данных для заполнения области прямоугольника rect. Метод заполняет максимально возможное количество пикселов, а затем выдает исключение.
 
TypeError — Объекты rect и inputByteArray имеют значение null.

См. также


Пример

В следующем примере методы getPixels() и setPixels() используются для копирования пикселов из одного объекта BitmapData в другой.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC);
var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000);

var rect:Rectangle = new Rectangle(0, 0, 100, 100);
var bytes:ByteArray = bmd1.getPixels(rect);

bytes.position = 0;
bmd2.setPixels(rect, bytes);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;
setVector()метод 
public function setVector(rect:Rectangle, inputVector:Vector.<uint>):void

Параметры

rect:Rectangle
 
inputVector:Vector.<uint>

threshold()метод 
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Сопоставляет пиксельные значения в изображении с заданным пороговым значением и присваивает пикселам, прошедшим проверку, новые цветовые значения. С помощью метода threshold() можно изолировать и заменить диапазоны в изображении и выполнить другие логические операции над его пикселами.

Проверка метода threshold() имеет следующую логику:

  1. если ((pixelValue & mask) operation (threshold & mask)), то установите color для пиксела;
  2. В противном случае, если copySource == true, то пиксел получает соответствующее значение из sourceBitmap.

Параметр operation задает оператор сравнения, используемый при пороговой проверке. Например, используя "==" в качестве параметра operation можно изолировать конкретное цветовое значение в изображении. А с помощью операции {operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000} можно сделать все целевые пикселы полностью прозрачными, если значение альфа-канала пиксела исходного изображения меньше 0x7F. Этот прием можно использовать для анимированных переходов и других эффектов.

Параметры

sourceBitmapData:BitmapData — Вводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData.
 
sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
 
destPoint:Point — Точка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника.
 
operation:String — В качестве строки String передается один из следующих операторов сравнения: "<", "<=", ">", ">=", "==", "!="
 
threshold:uint — Значение, с которым сопоставляется каждый пиксел, чтобы узнать, больше он или равен порогу.
 
color:uint (default = 0) — Значение цвета, которое получает пиксел при успешном прохождении пороговой проверки. Значение по умолчанию — 0x00000000.
 
mask:uint (default = 0xFFFFFFFF) — Маска используется с целью изоляции компонента цвета.
 
copySource:Boolean (default = false) — При значении true пиксельные значения из исходного изображения копируются в целевое, если пиксел не проходит пороговую проверку. При значении false исходное изображение не копируется, если пиксел не проходит пороговую проверку.

Возвращает
uint — Число измененных пикселов.

Выдает
TypeError — Объекты sourceBitmapData, sourceRect, destPoint или operation имеют значение null.
 
ArgumentError — Строка operation не является допустимой операцией.

Пример

В следующем примере используется метод perlinNoise() для добавления сине-красного рисунка в объект BitmapData, а затем вызывается метод threshold(), чтобы скопировать эти пикселы из первого объекта BitmapData во второй, заменяя пикселы, в которых значение красного больше 0x80 (50%), пикселами с прозрачным красным цветом(0x20FF0000).

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.geom.Point;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);

var seed:int = int(Math.random() * int.MAX_VALUE);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null);

var bitmap1:Bitmap = new Bitmap(bmd1);
addChild(bitmap1);

var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);
var pt:Point = new Point(0, 0);
var rect:Rectangle = new Rectangle(0, 0, 200, 200);
var threshold:uint =  0x00800000; 
var color:uint = 0x20FF0000;
var maskColor:uint = 0x00FF0000;
bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);

var bitmap2:Bitmap = new Bitmap(bmd2);
bitmap2.x = bitmap1.x + bitmap1.width + 10;
addChild(bitmap2);
unlock()метод 
public function unlock(changeRect:Rectangle = null):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Разблокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, обновлялись при изменении данного объекта BitmapData. Чтобы повысить производительность, используйте этот метод вместе с методом lock() до или после многочисленных вызовов метода setPixel() или setPixel32().

Параметры

changeRect:Rectangle (default = null) — Измененная область объекта BitmapData. Если не задать значения для данного параметра, измененной считается вся область объекта BitmapData. Для использования этого параметра требуется проигрыватель Flash Player версии 9.0.115.0 или более поздней.

См. также


Пример

В следующем примере создается объект BitmapData на базе свойства bitmapData объекта Bitmap с именем picture. Затем вызывается метод lock() перед вызовом сложной пользовательской функции, complexTransformation(), изменяющей объект BitmapData. (Объект picture и функция complexTransformation() в этом примере не определяются.) Даже если функция complexTransformation() обновляет свойство bitmapData объекта picture, изменения не отображаются, пока код не вызовет метод unlock() объекта bitmapData.
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;
Примеры Как пользоваться примерами
BitmapDataExample.as

В следующем примере класс BitmapDataExample используется для загрузки изображения Image.gif в объект DisplayObject в месте по умолчанию (0, 0). Затем копия Image.gif помещается справа от оригинала, в котором применяются новые цвета к пикселам, подвергающимся тестированию с помощью метода threshold(). Это можно сделать, выполнив следующие действия.
  1. Создается свойство url, описывающее местоположение и имя файла изображения.
  2. Конструктор класса создает объект Loader, который затем создает экземпляр прослушивателя событий, отправляемых по завершении обработки изображения методом completeHandler().
  3. Затем объект URLRequest с именем request передается методу loader.load(), который загружает изображение в память с помощью экранного объекта.
  4. После этого изображение добавляется в список отображения, который показывает изображение на экране в положении с координатами x = 0, y = 0.
  5. Затем метод completeHandler() выполняет следующее:
    • Создает второй объект Loader и инициализированный вместе с ним объект Bitmap.
    • Создает второй объект Bitmap, duplicate, который в свою очередь вызывает метод duplicateImage(), создающий дубликат исходного изображения.
    • Создает объект BitmapData, который назначается объекту BitmapData объекта duplicate.
    • Создает новый объект Rectangle, инициализированный с теми же координатами, шириной и высотой, что и исходное изображение.
    • Создает новый объект Point с координатами по умолчанию: x = 0, y = 0.
    • Создает следующие переменные:
      • operation — применяет новый цвет, когда пороговое значение больше или равно исходному.
      • threshold — значение, с которым сравнивается каждый пиксел (в данном примере это светло-серый цвет со значением альфа-канала 0xCC).
      • color — цвет, который будет задан пикселам, проходящим пороговый тест, — в данном случае это сплошной желтый цвет.
      • mask — диаметрально противоположный цвет (прозрачный синий).
      • copySource — получает значение false, указывающее на то, что значения пикселов не копируются в том случае, если пороговое значение не проходит. Это значение не имеет смысла, потому что изображение продублировано и изменяются только пикселы, прошедшие пороговый тест.
    • Вызывает метод threshold() с использованием предшествующих переменных. В результате мы получаем уравнение порога: если (текущее значение пиксела & 0x000000FF) больше или равно (0xCCCCCCCC & 0x000000FF), то ему задается 0xFFFFFF00.

Примечания.


package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.net.URLRequest;

    public class BitmapDataExample extends Sprite {
        private var url:String = "Image.gif";
        private var size:uint = 80;

        public function BitmapDataExample() {
            configureAssets();
        }

        private function configureAssets():void {
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

            var request:URLRequest = new URLRequest(url);
            loader.x = size * numChildren;
            loader.load(request);
            addChild(loader);
        }

        private function duplicateImage(original:Bitmap):Bitmap {
            var image:Bitmap = new Bitmap(original.bitmapData.clone());
            image.x = size * numChildren;
            addChild(image);
            return image;
        }

        private function completeHandler(event:Event):void {
            var loader:Loader = Loader(event.target.loader);
            var image:Bitmap = Bitmap(loader.content);

            var duplicate:Bitmap = duplicateImage(image);
            var bitmapData:BitmapData = duplicate.bitmapData;
            var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
            var destPoint:Point = new Point();
            var operation:String = ">=";
            var threshold:uint = 0xCCCCCCCC;
            var color:uint = 0xFFFFFF00;
            var mask:uint = 0x000000FF;
            var copySource:Boolean = true;

            bitmapData.threshold(bitmapData,
                                 sourceRect,
                                 destPoint,
                                 operation,
                                 threshold,
                                 color,
                                 mask,
                                 copySource);
        }
        
        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("Unable to load image: " + url);
        }
    }
}