Пакет | flash.display |
Класс | public class BitmapData |
Наследование | BitmapData Object |
Реализует | IBitmapDrawable |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
flash.display.Loader
.
Этот класс позволяет отделить операции по визуализации растрового изображения от внутренних подпрограмм обновления отображения проигрывателя Flash Player. Путем манипуляции с объектом BitmapData напрямую можно создавать сложные изображения без необходимости постоянно перерисовывать содержимое из векторных данных в каждом кадре.
Методы класса BitmapData поддерживают эффекты, не доступные через фильтры, предусмотренные для нерастровых экранных объектов.
Объект BitmapData содержит массив пиксельных данных. Эти данные могут представлять собой либо полностью непрозрачное растровое изображение, либо прозрачное растровое изображение с данными альфа-канала. Объекты BitmapData любого типа сохраняются в виде буфера 32-разрядных целых чисел. Каждое 32-разрядное целое число определяет свойства одного пикселя в растровом изображении.
Каждое 32-разрядное целое число представляет собой комбинацию 8-разрядных значений каналов (от 0 до 255), описывающих альфа-прозрачность и значения красного, зеленого и синего (ARGB) пикселя. (Для значений ARGB наиболее значимый байт представляет значение альфа-канала, а за ним следуют красный, зеленый и синий.)
Четыре канала (альфа-канал, красный, зеленый и синий) представлены числами при использовании в методе BitmapData.copyChannel()
или свойствами DisplacementMapFilter.componentX
и DisplacementMapFilter.componentY
, и эти числа представлены следующими константами класса BitmapDataChannel:
-
BitmapDataChannel.ALPHA
-
BitmapDataChannel.RED
-
BitmapDataChannel.GREEN
-
BitmapDataChannel.BLUE
Объекты BitmapData можно присоединить к объекту Bitmap с помощью свойства bitmapData
объекта Bitmap.
Объект BitmapData можно использовать для заполнения объекта Graphics с помощью методаGraphics.beginBitmapFill()
.
Во время выполнения AIR классы DockIcon, Icon, InteractiveIcon и SystemTrayIcon имеют свойство bitmaps
, которое является массивом объектов 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 пикселей в ширину.
Начиная с версии AIR 3 и проигрывателя Flash Player 11 ограничения по размеру для объекта BitmapData удалены. Максимальный размер растрового изображения теперь зависит от операционной системы.
Вызовы любого метода или свойства объекта BitmapData выдают ошибку ArgumentError, если объект BitmapData недействителен (например, если height == 0
и width == 0
) или если он был удален с помощью метода dispose().
Связанные элементы API
flash.desktop.DockIcon.bitmaps
flash.display.Graphics.beginBitmapFill()
flash.desktop.Icon.bitmaps
flash.desktop.InteractiveIcon.bitmaps
flash.display.Loader
flash.desktop.SystemTrayIcon.bitmaps
Свойство | Определено | ||
---|---|---|---|
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
height : int [только для чтения]
Высота растрового изображения в пикселях. | BitmapData | ||
rect : Rectangle [только для чтения]
Прямоугольник, определяющий размер и расположение растрового изображения. | BitmapData | ||
transparent : Boolean [только для чтения]
Определяет, поддерживает ли растровое изображение попиксельную прозрачность. | BitmapData | ||
width : int [только для чтения]
Ширина растрового изображения в пикселях. | BitmapData |
Метод | Определено | ||
---|---|---|---|
Создает объект BitmapData заданной ширины и высоты. | BitmapData | ||
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Создает фильтрованное изображение по исходному изображению и объекту filter. | BitmapData | ||
Возвращает новый объект BitmapData, являющийся клоном исходного экземпляра с точной копией содержащегося в нем растрового изображения. | BitmapData | ||
Изменяет значения цветов в заданной области растрового изображения с помощью объекта ColorTransform. | BitmapData | ||
Сравнивает два объекта 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. | BitmapData | ||
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Отображает исходный экранный объект source поверх растрового изображения с помощью векторного средства визуализации среды выполнения Flash. | BitmapData | ||
drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void
Отображает исходный экранный объект source поверх растрового изображения с помощью векторного средства визуализации среды выполнения Flash. | BitmapData | ||
Сжимает данный объект BitmapData с использованием выбранного алгоритма сжатия и возвращает новый объект ByteArray. | BitmapData | ||
Заполняет прямоугольную область пикселей заданным цветом ARGB. | BitmapData | ||
Выполняет операцию заливки изображения, начиная с точки с координатами (x, y) и заполняя область определенным цветом. | BitmapData | ||
Определяет целевой прямоугольник, на который оказывает влияние вызов метода applyFilter() при наличии объекта BitmapData, исходного прямоугольника и объекта фильтра. | BitmapData | ||
Определяет прямоугольный участок, полностью охватывающий все пиксели заданного цвета в пределах растрового изображения (если параметру findColor присвоено значение true), либо полностью охватывает все пиксели, не содержащие заданный цвет (если параметру findColor присвоено значение false). | BitmapData | ||
Возвращает целое число, представляющее RGB-значение пикселя из объекта BitmapData в конкретной точке (x, y). | BitmapData | ||
Возвращает значение цвета ARGB, содержащее данные альфа-канала и данные RGB. | BitmapData | ||
Формирует байтовый массив из прямоугольного участка пиксельных данных. | BitmapData | ||
Формирует векторный массив из прямоугольного участка пиксельных данных. | BitmapData | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Вычисление гистограммы двоичных чисел с 256 значениями для объекта BitmapData. | BitmapData | ||
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Выполняет распознавание на уровне пикселей между одним растровым изображением и точкой, прямоугольником или другим растровым изображением. | BitmapData | ||
Показывает, есть ли экземпляр класса 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 | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Прокручивает изображение на заданное число точек (x, y). | BitmapData | ||
Задает одиночный пиксель объекта BitmapData. | BitmapData | ||
Задает значения цвета и альфа-прозрачности отдельно взятой точки объекта BitmapData. | BitmapData | ||
Преобразует массив байтов в прямоугольный участок пиксельных данных. | BitmapData | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Преобразует вектор в прямоугольную область пиксельных данных. | BitmapData | ||
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
Сопоставляет пиксельные значения в изображении с заданным пороговым значением и присваивает пикселям, прошедшим проверку, новые цветовые значения. | BitmapData | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Разблокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, обновлялись при изменении данного объекта BitmapData. | BitmapData | ||
Возвращает элементарное значение заданного объекта. | Object |
height | свойство |
rect | свойство |
rect:Rectangle
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Прямоугольник, определяющий размер и расположение растрового изображения. Верхняя левая точка прямоугольника имеет значение 0; ширина и высота в пикселях равны размерам объекта BitmapData.
Реализация
public function get rect():Rectangle
transparent | свойство |
transparent:Boolean
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Определяет, поддерживает ли растровое изображение попиксельную прозрачность. Это значение можно задавать, только когда при создании объекта BitmapData в конструкторе передается значениеtrue
для параметра transparent
. Затем, когда объект BitmapData создан, можно узнать, поддерживает ли он попиксельную прозрачность: для этого нужно проверить, имеет ли свойство transparent
значение true
.
Реализация
public function get transparent():Boolean
width | свойство |
BitmapData | () | Конструктор |
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Создает объект BitmapData заданной ширины и высоты. Если задать значение для параметра fillColor
, каждый пиксель растрового изображения будет окрашен в этот цвет.
По умолчанию растровое изображение создается прозрачным, если не передано значение false
для параметра transparent
. Создав непрозрачное растровое изображение, его нельзя сделать прозрачным. Каждый пиксель непрозрачного растрового изображения использует только 24 бита информации о цветовых каналах. Если растровое изображение определено как прозрачное, каждый пиксель использует 32 бита информации о цветовых каналах, включая канал альфа-прозрачности.
В 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 пикселей в ширину. Если задать значение ширины или высоты, превышающее 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 — ширина и/или высота превышает максимальное значение.
|
applyFilter | () | метод |
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Создает фильтрованное изображение по исходному изображению и объекту 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
, приложение использует временную копию объекта для выполнения фильтрации. Если требуется обеспечить максимальную производительность, такую ситуацию лучше избегать.
Параметры
sourceBitmapData:BitmapData — Вводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData.
| |
sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
| |
destPoint:Point — Точка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника.
| |
filter:BitmapFilter — Объект фильтра, который будет использоваться для выполнения фильтрации. Каждый тип фильтра имеет определенные требования, приведенные ниже.
|
Выдает
TypeError — Объекты sourceBitmapData, sourceRect, destPoint или filter имеют значение null.
| |
IllegalOperationError — Прозрачность объектов BitmapData несовместима с операцией фильтрации.
|
Связанные элементы API
flash.filters.BlurFilter
flash.filters.ColorMatrixFilter
flash.filters.ConvolutionFilter
flash.filters.DisplacementMapFilter
flash.filters.DropShadowFilter
flash.filters.GlowFilter
flash.display.DisplayObject.filters
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Возвращает новый объект 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:flash.geom:ColorTransform):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Изменяет значения цветов в заданной области растрового изображения с помощью объекта ColorTransform
. Если прямоугольник соответствует границам растрового изображения, этот метод преобразует значения цветов для всего изображения.
Параметры
rect:Rectangle — Объект Rectangle, определяющий область изображения, в которой применяется объект ColorTransform.
| |
colorTransform:flash.geom:ColorTransform — Объект ColorTransform, описывающий применяемые значения преобразования цвета.
|
Выдает
TypeError — Объекты rect и colorTransform имеют значение null.
|
Связанные элементы API
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Сравнивает два объекта BitmapData. Если два объекта BitmapData имеют одинаковые размеры (ширину и высоту), метод возвращает новый объект BitmapData, в котором каждый пиксель представляет «разницу» между пикселями двух исходных объектов.
- Если пиксели равны, то пиксель разницы будет иметь значение 0x00000000.
- Если у двух пикселей разные RGB-значения (игнорирующие значение альфа-канала), то пиксель разницы будет иметь значение 0xRRGGBB, где RR/GG/BB — это индивидуальные значения разницы между красными, зелеными и синими каналами (значение пикселя в исходном объекте минус значение пикселя в объекте
otherBitmapData
). В данном случае различия значений альфа-канала игнорируются. - Если же альфа-канал имеет другое значение, то значением пикселя будет 0xZZFFFFFF, где ZZ - это разница между альфа-значениями (альфа-значение исходного объекта минус альфа-значение объекта
otherBitmapData
).
В качестве примера рассмотрим два следующих объекта 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-значения (0xFF0000 и 0xFFAA00). В результате использования метода 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.
|
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Переносит данные из одного канала отдельного объекта BitmapData или текущего объекта BitmapData в канал текущего объекта BitmapData. Все данные в других каналах конечного объекта BitmapData сохраняются.
Исходным или конечным значением канала может быть одно из следующих:
BitmapDataChannel.RED
BitmapDataChannel.GREEN
BitmapDataChannel.BLUE
BitmapDataChannel.ALPHA
Параметры
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.
|
Связанные элементы API
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Представляет собой процедуру быстрой обработки точек изображений без растяжения, поворота и цветовых эффектов. Этот метод копирует прямоугольную область исходного изображения в прямоугольную область того же размера в точке назначения конченого объекта 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.
|
Пример ( Использование этого примера )
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;
copyPixelsToByteArray | () | метод |
public function copyPixelsToByteArray(rect:Rectangle, data:ByteArray):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11.4, AIR 3.4 |
Заполняет пространство байтовым массивом из прямоугольного участка пиксельных данных. Начиная с индекса position
в ByteArray, этот метод записывает в байтовый массив беззнаковое целое (32-разрядное неумноженное значение) для каждого пикселя. При необходимости размер массива увеличивается до числа байт, необходимого для хранения данных всех пикселей.
Параметры
rect:Rectangle — Прямоугольная область в текущем объекте BitmapData
| |
data:ByteArray — целевой объект ByteArray
|
Выдает
TypeError — Если параметр rect имеет значение null или параметр data имеет значение null
|
Связанные элементы API
dispose | () | метод |
public function dispose():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Очищает память, задействованную для хранения объекта BitmapData.
Когда для изображения вызывается метод dispose()
, его ширина и высота получают значение 0. Все последующие вызовы методов и свойств данного экземпляра BitmapData заканчиваются неудачно и приводят к появлению исключения.
Метод BitmapData.dispose()
мгновенно освобождает память, занятую фактическими данными растрового изображения (растровое изображение может потреблять до 64 МБ памяти). После вызова BitmapData.dispose()
объект BitmapData больше не может использоваться, и среда выполнения Flash выдает исключение в случае последующего вызова функции для объекта BitmapData. Однако метод BitmapData.dispose()
не утилизирует объект BitmapData (около 128 байт); память, занимаемая фактическим объектом BitmapData, освобождается при его утилизации сборщиком мусора.
Связанные элементы API
Пример ( Использование этого примера )
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:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Отображает исходный экранный объект source
поверх растрового изображения с помощью векторного средства визуализации среды выполнения Flash. Можно задать параметры matrix
, colorTransform
, blendMode
и clipRect
назначения, чтобы управлять процессом визуализации. Также можно указать, должно ли сглаживать растровое изображение при масштабировании (это применимо только если источником является объект BitmapData).
Примечание. Метод drawWithQuality()
работает так же, как метод draw()
, но вместо использования свойства Stage.quality
для определения качества визуализации вектора необходимо указать параметр quality
в методе drawWithQuality()
.
Этот метод напрямую соответствует тому, как рисуются объекты с помощью стандартного векторного средства визуализации в интерфейсе инструмента разработки.
Исходный экранный объект не использует свои примененные преобразования для этого вызова. Он обрабатывается в том виде, в котором представлен в библиотеке или файле: без преобразования матрицы, цвета и без режима наложения. Чтобы нарисовать экранный объект (например, фрагмент ролика) с помощью его собственных свойств преобразования, можно скопировать его объект свойства transform
в свойство transform
объекта Bitmap, использующего объект BitmapData.
Этот метод поддерживается через протокол RTMP в Flash Player 9.0.115.0 и более поздних версиях и в Adobe AIR. Можно контролировать потоки на сервере Flash Media Server в сценарии, выполняемом на стороне сервера. Более подробную информацию см. в статьях о свойствах Client.audioSampleAccess
и Client.videoSampleAccess
в Справочном руководстве по серверному языку ActionScript для Adobe Flash Media Server.
Если объект source и (в случае с объектами Sprite и MovieClip) все его дочерние объекты не находятся в том же домене, что и вызывающий объект, или не находятся в содержимом, доступном вызывающему объекту посредством вызова метода Security.allowDomain()
, вызов метода draw()
выдает исключение SecurityError. Это ограничение не применимо к содержимому AIR в изолированной программной среде безопасности приложения.
Существуют также ограничения по использованию загруженного растрового изображения в качестве объекта source
. Вызов метода draw()
будет успешным, если загруженное изображение принадлежит тому же домену, что и вызывающий объект. Более того, файл междоменной политики на сервере изображения может предоставить право доступа домену содержимого SWF, вызывающего метод draw()
. В таком случае необходимо задать свойство checkPolicyFile
объекта LoaderContext и использовать этот объект в качестве параметра context
при вызове метода load()
объекта Loader, используемого для загрузки изображения. Эти ограничения не применимы к содержимому AIR в изолированной программной среде безопасности приложения.
В Windows метод draw()
не может выполнить захват содержимого SWF, встроенного в страницу HTML в объекте HTMLLoader в Adobe AIR.
Метод draw()
не может выполнить захват содержимого PDF в Adobe AIR. Он также не может выполнить захват содержимого SWF, встроенного в HTML-файл, в котором атрибут wmode
имеет значение window
в Adobe AIR.
Параметры
source:IBitmapDrawable — Экранный объект или объект BitmapData для рисования объекта BitmapData. Классы DisplayObject и BitmapData реализуют интерфейс IBitmapDrawable.
| |
matrix:Matrix (default = null ) — Объект Matrix, используемый для масштабирования, поворота и перемещения координат растрового изображения. Если не требуется применять преобразование матрицы в изображение, задайте для этого параметра идентификационную матрицу, созданную с помощью конструктора new Matrix() по умолчанию, или передайте значение null .
| |
colorTransform:flash.geom: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 .
Рисование с параметром |
Выдает
ArgumentError — Параметр source не является объектом BitmapData или DisplayObject.
| |
SecurityError — Объект source и (в случае с объектами Sprite и MovieClip) все его дочерние объекты находятся не в том же домене, что и вызывающий объект, или не находятся в содержимом, доступном вызывающему объекту посредством вызова метода Security.allowDomain() . Это ограничение не применимо к содержимому AIR в изолированной программной среде безопасности приложения.
| |
ArgumentError — Источник имеет значение null или не является действительным объектом IBitmapDrawable.
|
Связанные элементы API
flash.display.Stage.quality
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
Пример ( Использование этого примера )
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);
drawWithQuality | () | метод |
public function drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11.3, AIR 3.3 |
Отображает исходный экранный объект source
поверх растрового изображения с помощью векторного средства визуализации среды выполнения Flash. Можно задать параметры matrix
, colorTransform
, blendMode
и clipRect
назначения, чтобы управлять процессом визуализации. Также можно указать, должно ли сглаживать растровое изображение при масштабировании (это применимо только если источником является объект BitmapData).
Примечание. Метод drawWithQuality()
работает так же, как метод draw()
, но вместо использования свойства Stage.quality
для определения качества визуализации вектора необходимо указать параметр quality
в методе drawWithQuality()
.
Этот метод напрямую соответствует тому, как рисуются объекты с помощью стандартного векторного средства визуализации в интерфейсе инструмента разработки.
Исходный экранный объект не использует свои примененные преобразования для этого вызова. Он обрабатывается в том виде, в котором представлен в библиотеке или файле: без преобразования матрицы, цвета и без режима наложения. Чтобы нарисовать экранный объект (например, фрагмент ролика) с помощью его собственных свойств преобразования, можно скопировать его объект свойства transform
в свойство transform
объекта Bitmap, использующего объект BitmapData.
Этот метод поддерживается через протокол RTMP в Flash Player 9.0.115.0 и более поздних версиях и в Adobe AIR. Можно контролировать потоки на сервере Flash Media Server в сценарии, выполняемом на стороне сервера. Дополнительные сведения см. в разделах о свойствах Client.audioSampleAccess
и Client.videoSampleAccess
в документе Справочник по языку ActionScript на стороне сервера для Adobe Flash Media Server.
Если объект source и (в случае с объектами Sprite и MovieClip) все его дочерние объекты не находятся в том же домене, что и вызывающий объект, или не находятся в содержимом, доступном вызывающему объекту посредством вызова метода Security.allowDomain()
, вызов метода drawWithQuality()
выдает исключение SecurityError. Это ограничение не применимо к содержимому AIR в изолированной программной среде безопасности приложения.
Существуют также ограничения по использованию загруженного растрового изображения в качестве объекта source
. Вызов метода drawWithQuality()
будет успешным, если загруженное изображение принадлежит тому же домену, что и вызывающий объект. Более того, файл междоменной политики на сервере изображения может предоставить право доступа домену содержимого SWF, вызывающего метод drawWithQuality()
. В таком случае необходимо задать свойство checkPolicyFile
объекта LoaderContext и использовать этот объект в качестве параметра context
при вызове метода load()
объекта Loader, используемого для загрузки изображения. Эти ограничения не применимы к содержимому AIR в изолированной программной среде безопасности приложения.
В Windows метод drawWithQuality()
не может выполнить захват содержимого SWF, встроенного в страницу HTML в объекте HTMLLoader в Adobe AIR.
Метод drawWithQuality()
не может выполнить захват содержимого PDF в Adobe AIR. Он также не может выполнить захват содержимого SWF, встроенного в HTML-файл, в котором атрибут wmode
имеет значение window
в Adobe AIR.
Параметры
source:IBitmapDrawable — Экранный объект или объект BitmapData для рисования объекта BitmapData. Классы DisplayObject и BitmapData реализуют интерфейс IBitmapDrawable.
| |
matrix:Matrix (default = null ) — Объект Matrix, используемый для масштабирования, поворота и перемещения координат растрового изображения. Если не требуется применять преобразование матрицы в изображение, задайте для этого параметра идентификационную матрицу, созданную с помощью конструктора new Matrix() по умолчанию, или передайте значение null .
| |
colorTransform:flash.geom: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 .
Рисование с параметром | |
quality:String (default = null ) — Любое из значений StageQuality. Выбирает качество сглаживания для использования при рисовании векторной графики.
|
Выдает
ArgumentError — Параметр source не является объектом BitmapData или DisplayObject.
| |
SecurityError — Объект source и (в случае с объектами Sprite и MovieClip) все его дочерние объекты находятся не в том же домене, что и вызывающий объект, или не находятся в содержимом, доступном вызывающему объекту посредством вызова метода Security.allowDomain() . Это ограничение не применимо к содержимому AIR в изолированной программной среде безопасности приложения.
| |
ArgumentError — Источник имеет значение null или не является действительным объектом IBitmapDrawable.
|
Связанные элементы API
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
Пример ( Использование этого примера )
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.drawWithQuality(tf, , , , , , StageQuality.LOW); var bmp:Bitmap = new Bitmap(myBitmapData); this.addChild(bmp);
encode | () | метод |
public function encode(rect:Rectangle, compressor:Object, byteArray:ByteArray = null):ByteArray
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 11.3, AIR 3.3 |
Сжимает данный объект BitmapData с использованием выбранного алгоритма сжатия и возвращает новый объект ByteArray. Дополнительно записывает результирующие данные в указанный объект ByteArray. Аргумент compressor
задает алгоритм кодирования и может принимать значение PNGEncoderOptions, JPEGEncoderOptions или JPEGXREncoderOptions.
В следующем примере выполняется сжатие объекта BitmapData с использованием алгоритма JPEGEncoderOptions:
// Compress a BitmapData object as a JPEG file. var bitmapData:BitmapData = new BitmapData(640,480,false,0x00FF00); var byteArray:ByteArray = new ByteArray(); bitmapData.encode(new Rectangle(0,0,640,480), new flash.display.JPEGEncoderOptions(), byteArray);
Параметры
rect:Rectangle — Сжимаемая область объекта BitmapData.
| |
compressor:Object — Тип используемого сжатия. Допустимые значения: flash.display.PNGEncoderOptions , flash.display.JPEGEncoderOptions и flash.display.JPEGXREncoderOptions .
| |
byteArray:ByteArray (default = null ) — Выходной объект ByteArray, содержащий закодированное изображение.
|
ByteArray — Объект ByteArray, содержащий закодированное изображение.
|
Связанные элементы API
fillRect | () | метод |
public function fillRect(rect:Rectangle, color:uint):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Заполняет прямоугольную область пикселей заданным цветом ARGB.
Параметры
rect:Rectangle — Прямоугольная область для заливки.
| |
color:uint — Цвет ARGB для заливки области. Цвета ARGB часто указываются в шестнадцатеричном формате, например 0xFF336699.
|
Выдает
TypeError — Объект rect имеет значение null.
|
Связанные элементы API
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Выполняет операцию заливки изображения, начиная с точки с координатами (x, y) и заполняя область определенным цветом. Метод floodFill()
напоминает инструмент заливки в различных программах для рисования. Цвет представляет собой цвет ARGB, содержащий информацию альфа-канала и данные цвета.
Параметры
x:int — Координата x изображения.
| |
y:int — Координата y изображения.
| |
color:uint — Цвет ARGB для заливки.
|
Пример ( Использование этого примера )
(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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Определяет целевой прямоугольник, на который оказывает влияние вызов метода 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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Определяет прямоугольный участок, полностью охватывающий все пиксели заданного цвета в пределах растрового изображения (если параметру 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 — Область изображения, заполненная заданным цветом.
|
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Возвращает целое число, представляющее RGB-значение пикселя из объекта BitmapData в конкретной точке (x, y). Метод getPixel()
возвращает неумноженное значение пикселя. Информация альфа-канала не возвращается.
Все пиксели в объекте BitmapData сохраняются как предварительно умноженные значения цвета. В предварительно умноженном пикселе изображения значения красного, зеленого и синего канала уже умножены на данные альфа-канала. Например, если значение альфа-канала равно нулю, то значения RGB-каналов также равны нулю независимо от их значений до умножения. Потеря данных может вызвать проблемы при выполнении операций. Все методы BitmapData принимают и возвращают неумноженные значения. Перед тем как возвращать значение, внутреннее представление пикселя преобразуется из предварительно умноженного в неумноженное. Во время операции настройки, значение пикселя предварительно умножается, и только после этого настраивается необработанный пиксель изображения.
Параметры
x:int — Положение пикселя по оси x.
| |
y:int — Положение пикселя по оси y.
|
uint — Число, представляющее RGB-значение пикселя. Если координаты (x, y) находятся за пределами изображения, метод возвращает 0.
|
Связанные элементы API
Пример ( Использование этого примера )
getPixel()
определяется значение цвета для верхнего левого пикселя.
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000); var pixelValue:uint = bmd.getPixel(0, 0); trace(pixelValue.toString(16)); // ff0000;
getPixel32 | () | метод |
public function getPixel32(x:int, y:int):uint
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Возвращает значение цвета ARGB, содержащее данные альфа-канала и данные RGB. Этот метод подобен методу getPixel()
, который возвращает RGB-цвет без данных альфа-канала.
Все пиксели в объекте BitmapData сохраняются как предварительно умноженные значения цвета. В предварительно умноженном пикселе изображения значения красного, зеленого и синего канала уже умножены на данные альфа-канала. Например, если значение альфа-канала равно нулю, то значения RGB-каналов также равны нулю независимо от их значений до умножения. Потеря данных может вызвать проблемы при выполнении операций. Все методы BitmapData принимают и возвращают неумноженные значения. Перед тем как возвращать значение, внутреннее представление пикселя преобразуется из предварительно умноженного в неумноженное. Во время операции настройки, значение пикселя предварительно умножается, и только после этого настраивается необработанный пиксель изображения.
Параметры
x:int — Положение пикселя по оси x.
| |
y:int — Положение пикселя по оси y.
|
uint — Число, представляющее значение пикселя ARGB. Если координаты (x, y) находятся за пределами изображения, возвращается значение 0.
|
Связанные элементы API
Пример ( Использование этого примера )
getPixel32()
определяется значение цвета в верхнем левом пикселе, после чего определяются шестнадцатеричные значения для каждого компонента цвета (альфа-канал, красный, зеленый и синий).
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC); var pixelValue:uint = bmd.getPixel32(0, 0); 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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Формирует байтовый массив из прямоугольного участка пиксельных данных. Записывает неподписанное целое число (32-разрядное неумноженное значение пикселя) для каждого пикселя в байтовом массиве.
Параметры
rect:Rectangle — Прямоугольная область в текущем объекте BitmapData.
|
ByteArray — Объект ByteArray, представляющий пиксели в данном объекте Rectangle.
|
Выдает
TypeError — Объект rect имеет значение null.
|
Связанные элементы API
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Формирует векторный массив из прямоугольного участка пиксельных данных. Возвращает объект Vector беззнаковых целых чисел (32-разрядное неумноженное пиксельное значение) для заданного прямоугольника.
Параметры
rect:Rectangle — Прямоугольная область в текущем объекте BitmapData.
|
Vector.<uint> — Объект Vector, представляющий указанный объект Rectangle.
|
Выдает
TypeError — Объект rect имеет значение null.
|
histogram | () | метод |
public function histogram(hRect:Rectangle = null):Vector.<Vector.<Number>>
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Вычисление гистограммы двоичных чисел с 256 значениями для объекта BitmapData. Этот метод возвращает объект Vector, содержащий четыре экземпляра Vector.<Number> (четыре объекта Vector, содержащие объекты Number). Четыре экземпляра Vector представляют красный, зеленый, синий и альфа компоненты по порядку. Каждый экземпляр Vector содержит 256 значений, которые представляют распространение отдельного значения компонента: от 0 до 255.
Параметры
hRect:Rectangle (default = null ) — Используемая область объекта BitmapData.
|
Vector.<Vector.<Number>> |
hitTest | () | метод |
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Выполняет распознавание на уровне пикселей между одним растровым изображением и точкой, прямоугольником или другим растровым изображением. Попаданием считается наложение точки или прямоугольника на непрозрачный пиксель или два накладывающихся непрозрачных пикселя. При тестировании нажатия растягивание, поворот и другие преобразования обоих объектов не учитываются.
Если изображение непрозрачное, то при использовании данного метода оно считается полностью непрозрачным прямоугольником. Для тестирования нажатия, при котором учитывается прозрачность, оба изображения должны быть прозрачными. Когда тестируются два прозрачных изображения, параметры порога альфа-значений контролируют, какие значения альфа-канала (от 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.
|
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Блокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, не обновлялись при изменении данного объекта BitmapData. Чтобы повысить производительность, используйте этот метод вместе с методом unlock()
до или после многочисленных вызовов метода setPixel()
или setPixel32()
.
Связанные элементы API
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Проводит наложение каналов исходного изображения на целевое изображение. Для каждого канала и каждого пикселя вычисляется новое значение на основе значений каналов исходных и целевых пикселей. Например, в красном канале новое значение вычисляется следующим образом (где 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.
|
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Заполняет изображение пикселями, представляющими собой белый шум.
Параметры
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 для этого параметра.
|
Связанные элементы API
flash.display.BitmapDataChannel.BLUE
flash.display.BitmapDataChannel.GREEN
flash.display.BitmapDataChannel.ALPHA
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Переназначает значения цветовых каналов в изображении, содержащем до четырех массивов данных цветовой палитры, по одному для каждого канала.
Среда выполнения Flash предпринимает следующие шаги для создания конечного изображения.
- После вычисления значения красного, зеленого, синего и альфа-каналов складываются, образуя стандартное 32-разрядное целое число.
- Значения красного, зеленого, синего и альфа-каналов каждого пикселя извлекаются в отдельные значения от 0 до 255. Эти значения используются для поиска новых значений цвета в соответствующем массиве:
redArray
,greenArray
,blueArray
иalphaArray
. Каждый из этих четырех массивов должен содержать 256 значений. - После получения новых значений для всех четырех каналов, они образуют стандартное значение ARGB, которое применяется к пикселю.
Этот метод может поддерживать эффекты, создаваемые с использованием разных каналов. Каждый вводный массив содержит полные 32-разрядные значения, поэтому при складывании значений не происходит смещения. Эта подпрограмма не поддерживает фиксацию по каналам.
Если для канала не задан массив, то канал цвета копируется из исходного изображения в целевое.
Этот метод можно использовать для самых разнообразных эффектов, таких как общее наложение палитры (преобразование одного канала для создания псевдо-цветного изображения). Этот метод можно использовать для различных расширенных алгоритмов манипуляций с цветом, таких как использование гаммы, кривых, уровней и квантизации.
Параметры
sourceBitmapData:BitmapData — Вводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData.
| |
sourceRect:Rectangle — Прямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода.
| |
destPoint:Point — Точка в целевом изображении (текущем объекте BitmapData), соответствующая правому левому углу исходного прямоугольника.
| |
redArray:Array (default = null ) — Если redArray не имеет значение null , красный = redArray[исходное значение красного], в противном случае красный = исходное значение красного (red = redArray[source red value] else red = source rect value ).
| |
greenArray:Array (default = null ) — Если greenArray не имеет значение null , зеленый = greenArray[исходное значение зеленого], в противном случае зеленый = исходное значение зеленого (green = greenArray[source green value] else green = source green value. )
| |
blueArray:Array (default = null ) — Если blueArray не имеет значение null , синий = blueArray[исходное значение синего], в противном случае синий = исходное значение синего (blue = blueArray[source blue value] else blue = source blue value .
| |
alphaArray:Array (default = null ) — Если alphaArray не имеет значение null , альфа = alphaArray[исходное альфа-значение], в противном случае альфа = исходное альфа-значение (alpha = alphaArray[source alpha value] else alpha = source alpha value ).
|
Выдает
TypeError — Объекты sourceBitmapData, sourceRect и destPoint имеют значение null.
|
Пример ( Использование этого примера )
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
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Создает изображение с шумом Перлина.
Алгоритм создания шума Перлина интерполирует и объединяет отдельные функции случайного шума (называемые октавами) в одну функцию, создающую более естественный случайный шум. Как и в музыкальных октавах, каждая функция октавы удваивает частоту предыдущей. Шум Перлина описывается как «фрактальная сумма шума», так как он объединяет несколько наборов шумовых данных с разным уровнем детализации.
Функции шума Перлина можно использовать для симуляции естественных явлений и ландшафтов, таких как текстура древесины, облака и горные хребты. В большинстве случаев результат функции шума Перлина не отображается непосредственно: он используется для доработки других изображений, придавая им псевдослучайные вариации.
Простые функции цифрового белого шума часто дают изображения с резко контрастирующими точками. Такое явление редко встречается в естественных условиях. Алгоритм шума Перлина объединяет несколько функций шума с разным уровнем детализации. В результате чего разница между значениями соседних пикселей становится не столь большой.
Параметры
baseX:Number — Частота, используемая по оси x. Например, чтобы создать объект с шумом для изображения размером 64 x 128, передайте 64 для значения baseX .
| |
baseY:Number — Частота для использования в направлении y. Например, чтобы создать объект с шумом для изображения размером 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 для каждой октавы. Изменяя значения смещения, можно плавно прокручивать слои изображения с шумом Перлина. Каждая точка в массиве смещения применяется к функции шума конкретной октавы.
|
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Выполняет растворение точек от исходного изображения до целевого или для одного изображения. Среда выполнения Flash использует значение 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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Прокручивает изображение на заданное число точек (x, y). Края за пределами области прокрутки остаются без изменений.
Параметры
x:int — Число точек для прокрутки по горизонтали.
| |
y:int — Число точек для прокрутки по вертикали.
|
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Задает одиночный пиксель объекта BitmapData. При выполнении этой операции сохраняется текущее значение альфа-канала пикселя изображения. Значение параметра RGB-цвета обрабатывается как неумноженное значение цвета.
Примечание. Для повышения производительности при многократном использовании метода setPixel()
или setPixel32()
вызовите метод lock()
перед тем, как вызывать setPixel()
или setPixel32()
, а по завершении внесения изменений в пиксели, вызовите метод unlock()
. Эта процедура не позволяет объектам, ссылающимся на данный экземпляр BitmapData, обновляться, пока не будет завершено изменение пикселей.
Параметры
x:int — Положение по оси x пикселей, значение которого меняется.
| |
y:int — Положение по оси y пикселя, значение которого меняется.
| |
color:uint — Полученный RGB-цвет пикселя.
|
Связанные элементы API
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Задает значения цвета и альфа-прозрачности отдельно взятой точки объекта BitmapData. Этот метод поход на метод setPixel()
. Основное различие заключается в том, что метод setPixel32()
принимает ARGB-значение цвета, содержащее информацию об альфа-канале.
Все пиксели в объекте BitmapData сохраняются как предварительно умноженные значения цвета. В предварительно умноженном пикселе изображения значения красного, зеленого и синего канала уже умножены на данные альфа-канала. Например, если значение альфа-канала равно нулю, то значения RGB-каналов также равны нулю независимо от их значений до умножения. Потеря данных может вызвать проблемы при выполнении операций. Все методы BitmapData принимают и возвращают неумноженные значения. Перед тем как возвращать значение, внутреннее представление пикселя преобразуется из предварительно умноженного в неумноженное. Во время операции настройки, значение пикселя предварительно умножается, и только после этого настраивается необработанный пиксель изображения.
Примечание. Для повышения производительности при многократном использовании метода setPixel()
или setPixel32()
вызовите метод lock()
перед тем, как вызывать setPixel()
или setPixel32()
, а по завершении внесения изменений в пиксели, вызовите метод unlock()
. Эта процедура не позволяет объектам, ссылающимся на данный экземпляр BitmapData, обновляться, пока не будет завершено изменение пикселей.
Параметры
x:int — Положение по оси x пикселей, значение которого меняется.
| |
y:int — Положение по оси y пикселя, значение которого меняется.
| |
color:uint — Полученный ARGB-цвет пикселя. Если растровое изображение непрозрачное, то альфа-составляющая значения цвета игнорируется.
|
Связанные элементы API
Пример ( Использование этого примера )
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Преобразует массив байтов в прямоугольный участок пиксельных данных. Для каждого пикселя вызывается метод ByteArray.readUnsignedInt()
и записывается возвращаемое значение. Если массив байтов заканчивается, прежде чем будет заполнен весь прямоугольник, функция возвращает исключение. Массив байтов должен содержать 32-разрядные ARGB-значения пикселей. Перед считыванием пикселей и после него поиск по массиву байтов не выполняется.
Параметры
rect:Rectangle — Задает прямоугольную область объекта BitmapData.
| |
inputByteArray:ByteArray — Объект ByteArray состоит из 32-разрядных неумноженных пиксельных значений, которые должны использоваться в прямоугольной области.
|
Выдает
EOFError — Объект inputByteArray не содержит достаточно данных для заполнения области прямоугольника rect . Метод заполняет максимально возможное количество пикселей, а затем выдает исключение.
| |
TypeError — Объекты rect и inputByteArray имеют значение null.
|
Связанные элементы API
Пример ( Использование этого примера )
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
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Преобразует вектор в прямоугольную область пиксельных данных. Для каждого пикселя элемент вектора считывается и записывается в пиксель BitmapData. Ожидается, что данные в векторе являются 32-разрядными ARGB-значениями пикселей.
Параметры
rect:Rectangle — Задает прямоугольную область объекта BitmapData.
| |
inputVector:Vector.<uint> — Векторный объект состоит из 32-разрядных неумноженных пиксельных значений, используемых в прямоугольной области
|
Выдает
RangeError — Векторный массив недостаточно большой для чтения всех пиксельных данных.
|
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Сопоставляет пиксельные значения в изображении с заданным пороговым значением и присваивает пикселям, прошедшим проверку, новые цветовые значения. С помощью метода threshold()
можно изолировать и заменить диапазоны в изображении и выполнить другие логические операции над пикселями изображения.
Проверка метода threshold()
имеет следующую логику:
- если
((pixelValue & mask) operation (threshold & mask))
, то установитеcolor
для пикселя; - В противном случае, если
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 |
Версии среды выполнения: | Flash Player 9, AIR 1.0 |
Разблокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, обновлялись при изменении данного объекта BitmapData. Чтобы повысить производительность, используйте этот метод вместе с методом lock()
до или после многочисленных вызовов метода setPixel()
или setPixel32()
.
Параметры
changeRect:Rectangle (default = null ) — Измененная область объекта BitmapData. Если не задать значения для данного параметра, измененной считается вся область объекта BitmapData. Для использования этого параметра требуется проигрыватель Flash Player версии 9.0.115.0 или более поздней.
|
Связанные элементы API
Пример ( Использование этого примера )
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;
threshold()
. Это можно сделать, выполнив следующие действия.
- Создается свойство
url
, описывающее местоположение и имя файла изображения. - Конструктор класса создает объект Loader, который затем создает экземпляр прослушивателя событий, отправляемых по завершении обработки изображения методом
completeHandler()
. - Затем объект URLRequest с именем
request
передается методуloader.load()
, который загружает изображение в память с помощью экранного объекта. - После этого изображение добавляется в список отображения, который отображает изображение на экране в положении с координатами x = 0, y = 0.
- Затем метод
completeHandler()
выполняет следующие действия.- Создает второй объект Loader и инициализированный вместе с ним объект Bitmap.
- Создает второй объект Bitmap,
duplicate
, который в свою очередь вызывает методduplicateImage()
, создающий дубликат исходного изображения. - Создает объект BitmapData, который назначается объекту BitmapData объекта
duplicate
. - Создает новый объект Rectangle, инициализированный с теми же координатами, шириной и высотой, что и исходное изображение.
- Создает новый объект Point с координатами по умолчанию: x = 0, y = 0.
- Создает следующие переменные:
operation
— Использует новый цвет при пороговом значении, которое больше или равно исходному значению.threshold
— Значение, с которым сравнивается каждый пиксель (в данном примере это светло-серый цвет со значением альфа-канала 0xCC).color
— Цвет, указанный для пикселей, проходящих пороговый тест; в данном случае это желтый цвет.mask
— Диаметрально противоположный цвет (прозрачный синий).copySource
— Установлено на значениеfalse
, указывающее на то, что значения пикселей не копируются в том случае, если они не проходят пороговое значение. Это значение не имеет смысла, потому что изображение продублировано и изменяются только пиксели, прошедшие пороговый тест.
- Вызывает метод
threshold()
с использованием предшествующих переменных. В результате мы получаем уравнение порога:if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00
.
Примечания.
- SWF-файл потребуется откомпилировать с установленным для параметра «Безопасность локального воспроизведения» режимом «Доступ только к локальным файлам».
- Данный пример требует, чтобы файл с именем Image.gif находился в том же каталоге, что и SWF-файл.
- Рекомендуется использовать изображение с шириной не больше 80 пикселей.
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); } } }
Tue Jun 12 2018, 11:34 AM Z