Pakiet | flash.display |
Klasa | public class BitmapData |
Dziedziczenie | BitmapData Object |
Implementuje | IBitmapDrawable |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
flash.display.Loader
.
Klasa ta pozwala na oddzielenie operacji renderowania bitmapy od wewnętrznych procedur odświeżania ekranu modułu Flash Player. Bezpośrednio manipulując obiektem BitmapData, można tworzyć złożone obrazy bez wprowadzania w każdej klatce narzutu czasowego wynikającego z ciągłego przerysowywania zawartości na podstawie danych wektorowych.
Metody klasy BitmapData obsługują efekty, które nie są dostępne przez filtry udostępnione obiektom wyświetlanym innym niż bitmapy.
Obiekt BitmapData zawiera tablicę pikseli. Dane te mogą reprezentować w pełni nieprzezroczystą bitmapę lub przezroczystą bitmapę zawierającą dane kanału alpha. Każdy z typów obiektów BitmapData jest przechowywany jako bufor 32-bitowych liczb całkowitych. Każda 32-bitowa liczba całkowita określa właściwości pojedynczego piksela bitmapy.
Każda 32-bitowa liczba całkowita jest kombinacją czterech 8-bitowych wartości kanału (od 0 do 255), które opisują przezroczystość alpha oraz wartości koloru czerwonego, zielonego i niebieskiego (ARGB) piksela. (Dla wartości ARGB najbardziej znaczący bajt reprezentuje wartość kanału alpha a następnie koloru czerwonego, zielonego i niebieskiego).
Te cztery kanały (alpha, czerwony, zielony, niebieski) są reprezentowane jako liczby przy wykorzystaniu ich w metodzie BitmapData.copyChannel()
lub właściwościach DisplacementMapFilter.componentX
oraz DisplacementMapFilter.componentY
. Liczby te są reprezentowane przez następujące stałe w klasie BitmapDataChannel:
-
BitmapDataChannel.ALPHA
-
BitmapDataChannel.RED
-
BitmapDataChannel.GREEN
-
BitmapDataChannel.BLUE
Możliwe jest dołączenie obiektów BitmapData do obiektu Bitmap poprzez wykorzystanie właściwości bitmapData
obiektu Bitmap.
Możliwe jest wykorzystanie obiektu BitmapData w celu wypełnienia obiektu Graphics poprzez zastosowanie metody Graphics.beginBitmapFill()
.
W środowisku wykonawczym AIR klasy DockIcon, Icon, InteractiveIcon i SystemTrayIcon zawierają właściwość bitmaps
będącą tablicą obiektów BitmapData, które definiują obrazy bitmapowe ikony.
W środowisku AIR 1.5 i programie Flash Player 10 maksymalna szerokość i wysokość obiektu BitmapData wynosi 8191, a łączna liczba pikseli nie może przekroczyć 16 777 215. (A zatem, jeśli obiekt BitmapData ma szerokość 8,191 pikseli, nie może być wyższy niż 2048 pikseli). W programie Flash Player 9 i wcześniejszych wersjach oraz w środowisku AIR 1.1 i wcześniejszych wersjach ograniczenie wysokości i szerokości wynosiło 2880 pikseli.
W środowisku AIR 3 i programie Flash Player 11 usunięto ograniczenia obiektu BitmapData. Maksymalny rozmiar bitmapy zależy teraz od systemu operacyjnego.
Wywołania do dowolnej metody lub właściwości obiektu BitmapData powodują zgłoszenie błędu ArgumentError jeżeli obiekt BitmapData jest nieprawidłowy (na przykład gdy jego właściwość height == 0
i width == 0
) lub został usunięty poprzez metodę dispose().
Powiązane elementy interfejsu API
flash.desktop.DockIcon.bitmaps
flash.display.Graphics.beginBitmapFill()
flash.desktop.Icon.bitmaps
flash.desktop.InteractiveIcon.bitmaps
flash.display.Loader
flash.desktop.SystemTrayIcon.bitmaps
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
height : int [tylko do odczytu]
Wysokość obrazu bitmapowego w pikselach. | BitmapData | ||
rect : Rectangle [tylko do odczytu]
Prostokąt definiujący wymiary i położenie obrazu bitmapowego. | BitmapData | ||
transparent : Boolean [tylko do odczytu]
Określa, czy obraz bitmapowy obsługuje przezroczystość poszczególnych pikseli. | BitmapData | ||
width : int [tylko do odczytu]
Szerokość obrazu bitmapowego w pikselach. | BitmapData |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy obiekt BitmapData o określonej wysokości i szerokości. | BitmapData | ||
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Pobiera obraz źródłowy i filtr, a następnie generuje obraz filtrowany. | BitmapData | ||
Zwraca nowy obiekt BitmapData, który jest klonem oryginalnego wystąpienia z dokładną kopią zawartej bitmapy. | BitmapData | ||
Dopasowuje wartości kolorów w określonym obszarze obrazu bitmapowego za pomocą obiektu ColorTransform. | BitmapData | ||
Porównuje dwa obiekty BitmapData. | BitmapData | ||
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
Przenosi dane z jednego kanału innego obiektu BitmapData lub bieżącego obiektu BitmapData na kanał w bieżącym obiekcie BitmapData. | BitmapData | ||
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
Zapewnia szybką procedurę do manipulowania pikselami między różnymi obrazami, bez rozciągania, obrotu ani efektów kolorystycznych. | BitmapData | ||
Wypełnia tablicę bajtów na podstawie prostokątnego obszaru pikseli. | BitmapData | ||
Zwalnia pamięć używaną do przechowywania danego obiektu typu BitmapData. | BitmapData | ||
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Rysuje obiekt wyświetlany source na obrazie bitmapowym za pomocą wektorowego mechanizmu renderującego środowiska wykonawczego 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
Rysuje obiekt wyświetlany source na obrazie bitmapowym za pomocą wektorowego mechanizmu renderującego środowiska wykonawczego Flash. | BitmapData | ||
Kompresuje ten obiekt BitmapData przy użyciu wybranego algorytmu kompresji i zwraca nowy obiekt ByteArray. | BitmapData | ||
Wypełnia obszar prostokątny pikselami o określonym kolorze ARGB. | BitmapData | ||
Przeprowadza operację wypełniania jednolitego, zaczynając od punktu na współrzędnych (x, y) i wypełniając wybranym kolorem. | BitmapData | ||
Określa prostokąt docelowy, na który ma wpływ wywołanie metody applyFilter(), jeżeli jest podany obiekt BitmapData, prostokąt źródłowy oraz obiekt filtra. | BitmapData | ||
Określa obszar prostokątny, który ma albo w pełni otoczyć wszystkie piksele o określonym kolorze (jeśli parametr findColor ma wartość true), albo w pełni otoczyć wszystkie piksele w innych kolorach (jeśli parametr findColor ma wartość false). | BitmapData | ||
Zwraca liczbę całkowitą, która reprezentuje wartość RGB piksela z obiektu BitmapData w określonym punkcie (x, y). | BitmapData | ||
Zwraca wartość koloru ARGB, która zawiera dane kanału alfa i dane RGB. | BitmapData | ||
Generuje tablicę bajtów na podstawie prostokątnego obszaru pikseli. | BitmapData | ||
Generuje tablicę wektorów na podstawie prostokątnego obszaru pikseli. | BitmapData | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Oblicza histogram 256 wartości binarnych obiektu BitmapData. | BitmapData | ||
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Uaktywnia wykrywanie pikseli między obrazem bitmapowym a punktem, prostokątem lub innym obrazem bitmapowym. | BitmapData | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Blokuje obraz, co powoduje, że wszelkie obiekty odwołujące się do obiektu BitmapData, np. obiekty Bitmap, nie są aktualizowane w odpowiedzi na zmiany obiektu BitmapData. | BitmapData | ||
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
Wykonuje mieszanie poszczególnych kanałów z obrazu źródłowego do obrazu docelowego. | BitmapData | ||
noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
Wypełnia obraz pikselami stanowiącymi losowy szum. | BitmapData | ||
paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
Ponownie odwzorowuje wartości kanałów kolorów w obrazie zawierającym maksymalnie cztery tablice dotyczące kolorów - po jednej na każdy kanał. | BitmapData | ||
perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Generuje obraz szumu Perlina. | BitmapData | ||
pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
Przeprowadza operację rozpuszczania na poziomie pikseli - albo z obrazu źródłowego do obrazu docelowego, albo przy użyciu jednego obrazu. | BitmapData | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Przewija obraz o pewną liczbę pikseli (x, y). | BitmapData | ||
Ustawia pojedynczy piksel obiektu BitmapData. | BitmapData | ||
Ustawia wartości koloru i przezroczystości alfa jednego piksela w obiekcie typu BitmapData. | BitmapData | ||
Konwertuje tablicę bajtów na prostokątny obszar pikseli. | BitmapData | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Przekształca obiekt Vector w prostokątny region danych pikselowych. | BitmapData | ||
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
Testuje wartości pikseli obrazu ze względu na określony próg i określa nowe wartości kolorów pikseli zweryfikowanych pozytywnie. | BitmapData | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Odblokowuje obraz, co powoduje, że wszelkie obiekty odwołujące się do obiektu BitmapData, np. obiekty Bitmap, są aktualizowane w odpowiedzi na zmiany obiektu BitmapData. | BitmapData | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object |
height | właściwość |
rect | właściwość |
rect:Rectangle
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Prostokąt definiujący wymiary i położenie obrazu bitmapowego. Góra i lewa strona prostokąta mają wartość 0; szerokość i wysokość są równe szerokości i wysokości obiektu BitmapData.
Implementacja
public function get rect():Rectangle
transparent | właściwość |
transparent:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Określa, czy obraz bitmapowy obsługuje przezroczystość poszczególnych pikseli. Możliwe jest ustawienie tej wartości tylko w przypadku konstruowania obiektu BitmapData przez podanie wartości true
dla parametru transparent
konstruktora. Następnie, po utworzeniu obiektu BitmapData, możliwe jest sprawdzenie obsługi przezroczystości na poziomie poszczególnych pikseli. W tym celu należy sprawdzić, czy właściwość transparent
ma wartość true
.
Implementacja
public function get transparent():Boolean
width | właściwość |
BitmapData | () | Konstruktor |
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Tworzy obiekt BitmapData o określonej wysokości i szerokości. W przypadku określenia wartości parametru fillColor
każdy piksel bitmapy zostanie ustawiony na ten kolor.
Domyślnie bitmapa jest tworzona jako przezroczysta, chyba że zostanie podana wartość false
dla parametru transparent
. Po utworzeniu nieprzezroczystej bitmapy nie jest możliwa zmiana jej na bitmapę przezroczystą. Każdy piksel na bitmapie nieprzezroczystej wykorzystuje tylko 24 bity informacji kanałów kolorów. Po zdefiniowaniu bitmapy jako przezroczystej każdy piksel wykorzystuje 32 bity informacji kanałów kolorów, włącznie z kanałem przezroczystości alpha.
W środowisku AIR 1.5 i programie Flash Player 10 maksymalna szerokość i wysokość obiektu BitmapData wynosi 8191, a łączna liczba pikseli nie może przekroczyć 16 777 215. (A zatem, jeśli obiekt BitmapData ma szerokość 8,191 pikseli, nie może być wyższy niż 2048 pikseli). W programie Flash Player 9 lub nowszym i środowisku AIR 1.1 lub nowszym obowiązuje ograniczenie do 2880 pikseli wysokości i szerokości. Przy określeniu wartości szerokości lub wysokości większej niż 2880 nowa instancja nie zostanie utworzona.
Parametrywidth:int — Szerokość obrazu bitmapowego w pikselach.
| |
height:int — Wysokość obrazu bitmapowego w pikselach.
| |
transparent:Boolean (default = true ) — Określa, czy obraz bitmapowy obsługuje przezroczystość z dokładnością do pojedynczych pikseli. Właściwość ma wartość domyślną true (przezroczyste). W celu utworzenia bitmapy w pełni przezroczystej należy ustawić parametr transparent na wartość true oraz parametr fillColor na wartość 0x00000000 (lub na 0). Ustawienie właściwości transparent na wartość false może spowodować niewielkie podwyższenie wydajności renderowania.
| |
fillColor:uint (default = 0xFFFFFFFF ) — 32-bitowa wartość koloru ARGB, która jest stosowana do wypełnienia obszaru obrazu bitmapowego. Właściwość ma wartość domyślną 0xFFFFFFFF (jednolity kolor biały).
|
Zgłasza
ArgumentError — szerokość i/lub wysokość przekracza wymiary maksymalne.
|
applyFilter | () | metoda |
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Pobiera obraz źródłowy i filtr, a następnie generuje obraz filtrowany.
Ta metoda opiera się na zachowaniu wbudowanych obiektów filtra, które określa prostokąt docelowy, na który ma wpływ prostokąt źródła wprowadzania.
Po zastosowaniu filtra obraz wynikowy może być większy niż obraz wejściowy. Na przykład przy użyciu klasy BlurFilter w celu rozmycia prostokąta źródłowego o współrzędnych (50, 50,100,100) oraz punkcie docelowym (10, 10), obszar który ulega zmianie w obrazie docelowym jest większy niż (10, 10, 60, 60) ze względu na rozmycie. Dzieje się to wewnętrznie w trakcie wywołania metody applyFilter()
.
Jeżeli parametrsourceRect
parametru sourceBitmapData
jest obszarem wewnętrznym, jak na przykład (50, 50, 100, 100) w obrazie wielkości 200 x 200, wówczas filtr wykorzystuje piksele spoza parametru sourceRect
w celu wygenerowania prostokąta docelowego.
Jeżeli obiekt BitmapData oraz obiekt określony jako parametr sourceBitmapData
są tym samym obiektem, wówczas aplikacja wykorzystuje tymczasową kopię obiektu w celu przeprowadzenia filtrowania. Najlepiej jest nie dopuszczać do takiej sytuacji.
Parametry
sourceBitmapData:BitmapData — Wejściowy obraz bitmapowy do użycia. Obrazem źródłowym może być inny obiekt BitmapData lub może się on odwoływać do obecnej instancji BitmapData.
| |
sourceRect:Rectangle — Prostokąt definiujący obszar obrazu źródłowego do wykorzystania jako materiał do wprowadzenia.
| |
destPoint:Point — Punkt wewnątrz obrazu docelowego (obecna instancja BitmapData) odpowiadający górnemu lewemu narożnikowi prostokąta.
| |
filter:BitmapFilter — Obiekt filtra wykorzystywany do przeprowadzenia operacji filtrowania. Każdy typ filtra ma pewne wymagania, przedstawione poniżej:
|
Zgłasza
TypeError — Właściwości sourceBitmapData, sourceRect, destPoint oraz filter mają wartość null.
| |
IllegalOperationError — Przezroczystość obiektów BitmapData jest niekompatybilna z operacją filtrowania.
|
Powiązane elementy interfejsu API
flash.filters.BlurFilter
flash.filters.ColorMatrixFilter
flash.filters.ConvolutionFilter
flash.filters.DisplacementMapFilter
flash.filters.DropShadowFilter
flash.filters.GlowFilter
flash.display.DisplayObject.filters
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function clone():BitmapData
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Zwraca nowy obiekt BitmapData, który jest klonem oryginalnej instancji z dokładną kopią zawartej bitmapy.
ZwracaBitmapData — Nowy obiekt BitmapData jest identyczny względem oryginału.
|
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Dopasowuje wartości kolorów w określonym obszarze obrazu bitmapowego poprzez wykorzystanie obiektu ColorTransform
. Jeżeli prostokąt pasuje pod względem granic do obrazu bitmapowego, wówczas ta metoda transformuje wartości kolorów dla całego obrazu.
Parametry
rect:Rectangle — Obiekt Rectangle definiujący obszar, w którym obiekt ColorTransform ma być zastosowany.
| |
colorTransform:flash.geom:ColorTransform — Obiekt ColorTransform opisujący wartości transformacji kolorów do zastosowania.
|
Zgłasza
TypeError — Właściwości rect i colorTransform mają wartość null.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function compare(otherBitmapData:BitmapData):Object
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Porównuje dwa obiekty BitmapData. Jeżeli dwa obiekty BitmapData mają te same wymiary (szerokość i wysokość), wówczas metoda zwraca nowy obiekt BitmapData, w którym każdy piksel jest "różnicą" pomiędzy pikselami dwóch obiektów źródłowych:
- Jeżeli oba piksele są równe, piksel różnicy ma wartość 0x00000000.
- Jeżeli oba piksele mają różne wartości RGB (pomijając wartość alpha), wówczas piksel różnicy ma wartość 0xRRGGBB, gdzie RR/GG/BB są indywidualnymi wartościami różnicy między kanałami koloru czerwonego, zielonego i niebieskiego (wartość pikseli w obiekcie źródłowym minus wartość pikseli w obiekcie
otherBitmapData
). Różnice dotyczące kanału alpha są w tym przypadku pomijane. - Jeżeli tylko wartość kanału alpha się różni, wówczas wartość pikseli wynosi 0xZZFFFFF, gdzie ZZ jest różnicą wartości alpha (wartość alpha w obiekcie źródłowym minus wartość alpha w obiekcie
otherBitmapData
).
Można na przykład przeanalizować poniższe dwa obiekty 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
Uwaga: Kolory wykorzystane do wypełnienia dwóch obiektów BitmapData mają nieco inne wartości RGB (0xFF0000 i 0xFFAA00). Wynikiem metody compare()
jest nowy obiekt BitmapData, gdzie każdy piksel wykazuje różnicę w wartościach RGB między dwoma bitmapami.
Biorąc pod uwagę poniższe dwa obiekty BitmapData, w których kolory RGB są takie same, ale różne są wartości alpha:
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
Wynikiem metody compare()
jest nowy obiekt BitmapData, gdzie każdy piksel wykazuje różnicę w wartościach właściwości alpha między dwoma bitmapami.
Jeżeli obiekty BitmapData są swoimi odpowiednikami (ta sama szerokość i wysokość oraz identyczne wartości pikseli), wówczas metoda zwraca liczbę 0.
Jeżeli szerokości obiektów BitmapData nie są równe, wówczas metoda zwraca liczbę -3.
Jeżeli wysokości obiektów BitmapData nie są równe, ale szerokości są takie same, wówczas metoda zwraca liczbę -4.
Poniższy przykład ilustruje porównanie dwóch obiektów Bitmap o różnych szerokościach (50 i 60):
var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00); trace(bmd1.compare(bmd2)); // -4
Parametry
otherBitmapData:BitmapData — Obiekt BitmapData do porównania ze źródłowym obiektem BitmapData.
|
Object — Jeżeli dwa obiekty BitmapData mają te same wymiary (szerokość i wysokość), wówczas metoda zwraca nowy obiekt BitmapData, który posiada różnicę między tymi obiektami (zob. dyskusja główna). Jeżeli obiekty BitmapData są swoimi odpowiednikami, wówczas metoda zwraca liczbę 0. Jeżeli szerokości obiektów BitmapData nie są równe, wówczas metoda zwraca liczbę -3. Jeżeli wysokości obiektów BitmapData nie są równe, wówczas metoda zwraca liczbę -4.
|
Zgłasza
TypeError — Właściwość otherBitmapData ma wartość null.
|
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Przenosi dane z jednego kanału innego obiektu BitmapData lub bieżącego obiektu BitmapData na kanał w bieżącym obiekcie BitmapData. Wszelkie dane z innych kanałów w obiekcie docelowym BitmapData są zachowane.
Źródłowe wartości kanałów oraz docelowe wartości kanałów mogą mieć następujące wartości:
BitmapDataChannel.RED
BitmapDataChannel.GREEN
BitmapDataChannel.BLUE
BitmapDataChannel.ALPHA
Parametry
sourceBitmapData:BitmapData — Wejściowy obraz bitmapowy do wykorzystania. Obrazem źródłowym może być inny obiekt BitmapData lub może się on odwoływać do obecnego obiektu BitmapData.
| |
sourceRect:Rectangle — Źródłowy obiekt Rectangle. W celu skopiowania wyłącznie danych kanałów lub mniejszego obszaru wewnątrz bitmapy należy określić prostokąt źródłowy, który jest mniejszy niż całkowity rozmiar obiektu BitmapData.
| |
destPoint:Point — Docelowy obiekt Point reprezentujący górny lewy narożnik obszaru prostokątnego, gdzie umieszczane są nowe dane kanałów. W celu skopiowania wyłącznie danych kanałów z jednego obszaru do drugiego w obrazie docelowym należy określić punkt o współrzędnych innych niż (0,0).
| |
sourceChannel:uint — Kanał źródłowy. Należy zastosować wartość z klasy BitmapDataChannel (BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN , BitmapDataChannel.ALPHA ).
| |
destChannel:uint — Kanał docelowy. Należy wykorzystać wartość z klasy BitmapDataChannel (BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN , BitmapDataChannel.ALPHA ).
|
Zgłasza
TypeError — Właściwości sourceBitmapData, sourceRect lub destPoint mają wartość null.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Zapewnia szybką procedurę do manipulowania pikselami między różnymi obrazami, bez rozciągania, obrotu ani efektów kolorystycznych. Ta metoda kopiuje prostokątny obszar obrazu źródłowego do obszaru prostokątnego o tym samym rozmiarze w punkcie docelowym obiektu BitmapData.
W przypadku zawarcia parametrów alphaBitmap
oraz alphaPoint
możliwe jest wykorzystanie drugorzędnego obrazu jako źródła właściwości alpha dla obrazu źródłowego. Jeżeli obraz źródłowy posiada dane alpha, wówczas oba zestawy tych danych są wykorzystywane do składania pikseli z obrazu źródłowego do obrazu docelowego. Parametr alphaPoint
jest punktem w obrazie alpha, który odpowiada górnemu lewemu narożnikowi prostokąta źródłowego. Wszelkie piksele znajdujące się poza przecięciem obrazu źródłowego i obrazu alpha nie są kopiowane do obrazu docelowego.
Właściwość mergeAlpha
kontroluje, czy kanał alpha jest lub nie jest wykorzystywany przy kopiowaniu jednego przezroczystego obrazu na drugi. W celu skopiowania pikseli z danymi kanału alpha należy ustawić właściwość mergeAlpha
na wartość true
. Domyślnie właściwość mergeAlpha
ma wartość false
.
Parametry
sourceBitmapData:BitmapData — Wejściowy obraz bitmapowy, z którego będą kopiowane piksele. Obrazem źródłowym może być inna instancja BitmapData lub może się on odwoływać do obecnej instancji BitmapData.
| |
sourceRect:Rectangle — Prostokąt definiujący obszar obrazu źródłowego do użycia jako dane do wprowadzenia.
| |
destPoint:Point — Punkt docelowy reprezentujący górny lewy narożnik obszaru prostokątnego, gdzie umieszczane są nowe dane kanałów.
| |
alphaBitmapData:BitmapData (default = null ) — Drugorzędny obiekt źródłowy parametru alpha obiektu BitmapData.
| |
alphaPoint:Point (default = null ) — Punkt w obiekcie źródłowym parametru alpha obiektu BitmapData odpowiadający górnemu lewemu narożnikowi parametru sourceRect .
| |
mergeAlpha:Boolean (default = false ) — W celu wykorzystania kanału alpha należy ustawić wartość true . W celu skopiowania pikseli bez kanału alpha należy ustawić wartość false .
|
Zgłasza
TypeError — Właściwości sourceBitmapData, sourceRect oraz destPoint mają wartość null.
|
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function copyPixelsToByteArray(rect:Rectangle, data:ByteArray):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Wypełnia tablicę bajtów na podstawie prostokątnego obszaru pikseli. Ta metoda zapisuje w tablicy bajtów liczbę całkowitą bez znaku (32-bitową niepomnożoną wartość pikseli) dla każdego piksela, rozpoczynając od indeksu position
obiektu ByteArray. Jeśli jest to niezbędne, rozmiar tablicy bajtów zostaje zwiększony do liczby bajtów wymaganej w celu zapisania wszystkich danych pikseli.
Parametry
rect:Rectangle — Obszar prostokątny w obecnym obiekcie BitmapData.
| |
data:ByteArray — Docelowy obiekt ByteArray.
|
Zgłasza
TypeError — Gdy argument rect ma wartość null lub argument data ma wartość null .
|
Powiązane elementy interfejsu API
dispose | () | metoda |
public function dispose():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Zwalnia pamięć używaną do przechowywania danego obiektu typu BitmapData.
W przypadku wywołania metody dispose()
na obrazie, jego szerokość i wysokość zostają ustawione na 0. Wszelkie kolejne wywołania do metod lub właściwości tej instancji BitmapData zakończą się niepowodzeniem oraz zgłoszone zostaną wyjątki.
Metoda BitmapData.dispose()
niezwłocznie zwalnia pamięć zajętą przez faktyczne dane bitmapowe (jedna bitmapa może zajmować maksymalnie 64 MB pamięci). Po użyciu metody BitmapData.dispose()
obiekt BitmapData nie może być już używany, środowisko wykonawcze Flash wygeneruje wyjątek przy próbie wywołania funkcji tego obiektu. Jednak metoda BitmapData.dispose()
nie porządkuje pamięci po obiekcie BitmapData (pozostawiając około 128 bajtów); pamięć zajęta przez obiekt BitmapData jest zwalniana w momencie usunięcia tego obiektu przez proces porządkowania pamięci.
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
dispose()
(zgłaszany jest wyjątek):
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 | () | metoda |
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Rysuje obiekt wyświetlany source
na obrazie bitmapowym za pomocą wektorowego mechanizmu renderującego środowiska wykonawczego Flash. Możliwe jest określenie parametrów matrix
, colorTransform
, blendMode
oraz docelowego parametru clipRect
w celu kontrolowania wydajności renderowania. Opcjonalnie możliwe jest określenie, czy bitmapa powinna być wygładzana w trakcie skalowania (jest to możliwe tylko, gdy obiektem źródłowym jest obiekt BitmapData).
Uwaga: Metoda drawWithQuality()
działa analogicznie do metody draw()
, ale zamiast określać jakość renderowania grafiki wektorowej na podstawie właściwości Stage.quality
, umożliwia podanie przy wywołaniu parametru quality
.
Ta metoda odpowiada bezpośrednio za sposób, w jaki obiekty są rysowane przy pomocy mechanizmu renderującego wektory standardowe dla obiektów w interfejsie narzędzi autoryzacyjnych.
Źródłowy obiekt wyświetlany nie wykorzystuje żadnych zastosowanych transformacji dla tego wywołania. Jest on traktowany jakby istniał w bibliotece lub pliku, bez transformacji macierzy, transformacji kolorów czy trybu mieszania. W celu narysowania obiektu wyświetlanego (jak na przykład klip filmowy) przy wykorzystaniu jego własnych właściwości transformacji, możliwe jest skopiowanie jego obiektu właściwości transform
do właściwości transform
obiektu Bitmap korzystającego z obiektu BitmapData.
Ta metoda jest obsługiwana przy użyciu protokołu RTMP w programie Flash Player 9.0.115.0 i nowszych wersjach oraz w środowisku Adobe AIR. Istnieje możliwość sterowania dostępem do strumieni na serwerze z oprogramowaniem Flash Media Server za pomocą skryptu po stronie serwera. Więcej informacji na ten temat zawierają opisy właściwości Client.audioSampleAccess
oraz Client.videoSampleAccess
w publikacji Dokumentacja języka ActionScript po stronie serwera dla programu Flash Media Server.
Jeśli obiekt źródłowy oraz (w przypadku obiektu Sprite lub MovieClip) wszystkie jego obiekty podrzędne nie pochodzą z tej samej domeny, co treść wywołująca, lub nie należą do treści udostępnionej dla treści wywołującej za pomocą metody Security.allowDomain()
, wywołanie metody draw()
spowoduje wygenerowanie wyjątku SecurityError. To ograniczenie nie ma zastosowania do zawartości AIR w obszarze izolowanym aplikacji.
Obowiązują także ograniczenia w wykorzystaniu załadowanego obrazu bitmapowego jako obiektu source
. Wywołanie metody draw()
kończy się powodzeniem, jeśli załadowany obraz pochodzi z tej samej domeny, co treść wywołująca. Ponadto międzydomenowy plik zasad na serwerze obrazu może nadać uprawnienia domenie treści SWF wywołującej metodę draw()
. W tym przypadku należy ustawić właściwość checkPolicyFile
obiektu LoaderContext i użyć tego obiektu jako parametru context
w wywołaniu metody load()
obiektu Loader wykorzystywanego do załadowania obrazu. Te ograniczenia nie ma zastosowania do treści AIR w obszarze izolowanym zabezpieczeń aplikacji.
W systemie Windows metoda draw()
nie umożliwia przechwytywania treści SWF osadzonej w stronie HTML w obiekcie HTMLLoader w środowisku Adobe AIR.
Metoda draw()
nie umożliwia przechwytywania treści PDF w środowisku Adobe AIR. Nie umożliwia także przechwytywania treści SWF osadzonej w kodzie HTML, gdy atrybut wmode
jest ustawiony "window"
(w środowisku Adobe AIR).
Parametry
source:IBitmapDrawable — Obiekt wyświetlany lub obiekt BitmapData konieczny przy rysowaniu obiektu BitmapData. (Klasy DisplayObject oraz BitmapData implementują interfejs IBitmapDrawable).
| |
matrix:Matrix (default = null ) — Obiekt Matrix jest wykorzystywany w celu skalowania, obracania oraz translacji współrzędnych bitmapy. Jeżeli nie jest konieczne zastosowanie matrycy transformacji względem obrazu, wówczas należy ustawić ten parametr na wartość matrycy tożsamości, utworzonej przy pomocy domyślnego konstruktora new Matrix() lub podać wartość null .
| |
colorTransform:flash.geom:ColorTransform (default = null ) — Obiekt ColorTransform wykorzystywany przy dopasowywaniu wartości kolorów bitmapy. Przy braku dostarczanego obiektu kolory obrazu bitmapowego nie są transformowane. Jeżeli konieczne jest podanie tego parametru, ale nie ma potrzeby transformacji obrazu należy ustawić ten parametr na obiekt ColorTransform utworzony przy pomocy domyślnego konstruktora new ColorTransform() .
| |
blendMode:String (default = null ) — Wartość ciągu znaków z klasy flash.display.BlendMode, określający tryb mieszania do zastosowania w wynikowej bitmapie.
| |
clipRect:Rectangle (default = null ) — Obiekt Rectangle definiujący obszar obiektu źródłowego do narysowania. W przypadku gdy ta wartość nie została dostarczona, nie dochodzi do przycinania i rysowany jest cały obiekt źródłowy.
| |
smoothing:Boolean (default = false ) — Wartość typu Boolean określająca, czy obiekt jest wygładzany w trakcie skalowania lub obracania ze względu na skalowanie lub obracanie określone w parametrze matrix . Parametr smoothing jest stosowany tylko w sytuacji, gdy parametr source jest obiektem BitmapData. W przypadku ustawienia parametru smoothing na wartość false obracany lub skalowany obraz BitmapData może pojawić się pikselizacja lub poszarpanie. Na przykład poniższe dwa obrazy wykorzystują ten sam obiekt BitmapData dla parametru source , jednakże parametr smoothing jest ustawiony na wartość true w przypadku obiektu po lewej stronie oraz na wartość false w przypadku obiektu po prawej stronie.
Rysowanie bitmapy z parametrem |
Zgłasza
ArgumentError — Parametr source nie jest obiektem BitmapData ani DisplayObject.
| |
SecurityError — Obiekt source oraz (w przypadku obiektu Sprite lub MovieClip) wszystkie jego obiekty podrzędne nie pochodzą z tej samej domeny co obiekt wywołujący lub nie należą do treści dostępnej dla obiektu wywołującego poprzez wywołanie metody Security.allowDomain() . To ograniczenie nie ma zastosowania do treści AIR w obszarze izolowanym zabezpieczeń aplikacji.
| |
ArgumentError — Źródło ma wartość null lub nie jest prawidłowym obiektem IBitmapDrawable.
|
Powiązane elementy interfejsu API
flash.display.Stage.quality
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
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
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.3, AIR 3.3 |
Rysuje obiekt wyświetlany source
na obrazie bitmapowym za pomocą wektorowego mechanizmu renderującego środowiska wykonawczego Flash. Możliwe jest określenie parametrów matrix
, colorTransform
, blendMode
oraz docelowego parametru clipRect
w celu kontrolowania wydajności renderowania. Opcjonalnie możliwe jest określenie, czy bitmapa powinna być wygładzana w trakcie skalowania (jest to możliwe tylko, gdy obiektem źródłowym jest obiekt BitmapData).
Uwaga: Metoda drawWithQuality()
działa analogicznie do metody draw()
, ale zamiast określać jakość renderowania grafiki wektorowej na podstawie właściwości Stage.quality
, umożliwia podanie przy wywołaniu parametru quality
.
Ta metoda odpowiada bezpośrednio za sposób, w jaki obiekty są rysowane przy pomocy mechanizmu renderującego wektory standardowe dla obiektów w interfejsie narzędzi autoryzacyjnych.
Źródłowy obiekt wyświetlany nie wykorzystuje żadnych zastosowanych transformacji dla tego wywołania. Jest on traktowany jakby istniał w bibliotece lub pliku, bez transformacji macierzy, transformacji kolorów czy trybu mieszania. W celu narysowania obiektu wyświetlanego (jak na przykład klip filmowy) przy wykorzystaniu jego własnych właściwości transformacji, możliwe jest skopiowanie jego obiektu właściwości transform
do właściwości transform
obiektu Bitmap korzystającego z obiektu BitmapData.
Ta metoda jest obsługiwana przy użyciu protokołu RTMP w programie Flash Player 9.0.115.0 i nowszych wersjach oraz w środowisku Adobe AIR. Istnieje możliwość sterowania dostępem do strumieni na serwerze z oprogramowaniem Flash Media Server za pomocą skryptu po stronie serwera. Więcej informacji na ten temat zawierają opisy właściwości Client.audioSampleAccess
i Client.videoSampleAccess
znajdujące się na stronie Dokumentacja języka ActionScript po stronie serwera dla programu Flash Media Server.
Jeśli obiekt źródłowy oraz (w przypadku obiektu Sprite lub MovieClip) wszystkie jego obiekty podrzędne nie pochodzą z tej samej domeny co element wywołujący albo nie należą do zawartości udostępnionej dla elementu wywołującego za pomocą metody Security.allowDomain()
, wywołanie metody drawWithQuality()
powoduje wygenerowanie wyjątku SecurityError. To ograniczenie nie ma zastosowania do zawartości AIR w obszarze izolowanym aplikacji.
Obowiązują także ograniczenia w wykorzystaniu załadowanego obrazu bitmapowego jako obiektu source
. Wywołanie metody drawWithQuality()
kończy się powodzeniem, jeśli wczytany obraz pochodzi z tej samej domeny co element wywołujący. Ponadto plik zasad międzydomenowych na serwerze obrazu może nadać uprawnienia domenie zawartości SWF wywołującej metodę drawWithQuality()
. W tym przypadku należy ustawić właściwość checkPolicyFile
obiektu LoaderContext i użyć tego obiektu jako parametru context
w wywołaniu metody load()
obiektu Loader wykorzystywanego do załadowania obrazu. Te ograniczenia nie ma zastosowania do treści AIR w obszarze izolowanym zabezpieczeń aplikacji.
W systemie Windows metoda drawWithQuality()
nie umożliwia przechwytywania zawartości SWF osadzonej na stronie HTML w obiekcie HTMLLoader w środowisku Adobe AIR.
Metoda drawWithQuality()
nie umożliwia przechwytywania zawartości PDF w środowisku Adobe AIR. Nie umożliwia także przechwytywania treści SWF osadzonej w kodzie HTML, gdy atrybut wmode
jest ustawiony "window"
(w środowisku Adobe AIR).
Parametry
source:IBitmapDrawable — Obiekt wyświetlany lub obiekt BitmapData konieczny przy rysowaniu obiektu BitmapData. (Klasy DisplayObject oraz BitmapData implementują interfejs IBitmapDrawable).
| |
matrix:Matrix (default = null ) — Obiekt Matrix jest wykorzystywany w celu skalowania, obracania oraz translacji współrzędnych bitmapy. Jeżeli nie jest konieczne zastosowanie matrycy transformacji względem obrazu, wówczas należy ustawić ten parametr na wartość matrycy tożsamości, utworzonej przy pomocy domyślnego konstruktora new Matrix() lub podać wartość null .
| |
colorTransform:flash.geom:ColorTransform (default = null ) — Obiekt ColorTransform wykorzystywany przy dopasowywaniu wartości kolorów bitmapy. Przy braku dostarczanego obiektu kolory obrazu bitmapowego nie są transformowane. Jeżeli konieczne jest podanie tego parametru, ale nie ma potrzeby transformacji obrazu należy ustawić ten parametr na obiekt ColorTransform utworzony przy pomocy domyślnego konstruktora new ColorTransform() .
| |
blendMode:String (default = null ) — Wartość ciągu znaków z klasy flash.display.BlendMode, określający tryb mieszania do zastosowania w wynikowej bitmapie.
| |
clipRect:Rectangle (default = null ) — Obiekt Rectangle definiujący obszar obiektu źródłowego do narysowania. W przypadku gdy ta wartość nie została dostarczona, nie dochodzi do przycinania i rysowany jest cały obiekt źródłowy.
| |
smoothing:Boolean (default = false ) — Wartość typu Boolean określająca, czy obiekt jest wygładzany w trakcie skalowania lub obracania ze względu na skalowanie lub obracanie określone w parametrze matrix . Parametr smoothing jest stosowany tylko w sytuacji, gdy parametr source jest obiektem BitmapData. W przypadku ustawienia parametru smoothing na wartość false obracany lub skalowany obraz BitmapData może pojawić się pikselizacja lub poszarpanie. Na przykład poniższe dwa obrazy wykorzystują ten sam obiekt BitmapData dla parametru source , jednakże parametr smoothing jest ustawiony na wartość true w przypadku obiektu po lewej stronie oraz na wartość false w przypadku obiektu po prawej stronie.
Rysowanie bitmapy z parametrem | |
quality:String (default = null ) — Dowolna z wartości klasy StageQuality. Określa jakość wygładzania używanego podczas rysowania grafiki wektorowej.
|
Zgłasza
ArgumentError — Parametr source nie jest obiektem BitmapData ani DisplayObject.
| |
SecurityError — Obiekt source oraz (w przypadku obiektu Sprite lub MovieClip) wszystkie jego obiekty podrzędne nie pochodzą z tej samej domeny co obiekt wywołujący lub nie należą do treści dostępnej dla obiektu wywołującego poprzez wywołanie metody Security.allowDomain() . To ograniczenie nie ma zastosowania do treści AIR w obszarze izolowanym zabezpieczeń aplikacji.
| |
ArgumentError — Źródło ma wartość null lub nie jest prawidłowym obiektem IBitmapDrawable.
|
Powiązane elementy interfejsu API
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function encode(rect:Rectangle, compressor:Object, byteArray:ByteArray = null):ByteArray
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.3, AIR 3.3 |
Kompresuje ten obiekt BitmapData przy użyciu wybranego algorytmu kompresji i zwraca nowy obiekt ByteArray. Opcjonalnie zapisuje dane wynikowe w podanym obiekcie ByteArray. Argument compressor
określa algorytm kodowania. Może mieć wartość PNGEncoderOptions, JPEGEncoderOptions lub JPEGXREncoderOptions.
Poniższy przykładowy kod kompresuje obiekt BitmapData przy użyciu parametru 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);
Parametry
rect:Rectangle — Obszar obiektu BitmapData do skompresowania.
| |
compressor:Object — Kompresor, który ma zostać użyty. Prawidłowe wartości: flash.display.PNGEncoderOptions , flash.display.JPEGEncoderOptions i flash.display.JPEGXREncoderOptions .
| |
byteArray:ByteArray (default = null ) — Wyjściowy obiekt ByteArray do przechowywania zakodowanego obrazu.
|
ByteArray — Obiekt ByteArray zawierający zakodowany obraz.
|
Powiązane elementy interfejsu API
fillRect | () | metoda |
public function fillRect(rect:Rectangle, color:uint):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Wypełnia obszar prostokątny pikselami o określonym kolorze ARGB.
Parametry
rect:Rectangle — Prostokątny obszar do wypełnienia.
| |
color:uint — Wartość koloru ARGB, który wypełnia obszar. Kolory ARGB są często określane w formacie szesnastkowym; na przykład 0xFF336699.
|
Zgłasza
TypeError — Właściwość rect ma wartość null.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function floodFill(x:int, y:int, color:uint):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Przeprowadza operację wypełniania jednolitego, zaczynając od punktu na współrzędnych (x, y) i wypełniając wybranym kolorem. Metoda floodFill()
jest podobna do narzędzia wiadra z farbą, wykorzystywanego w różnych programach graficznych. Kolorem jest kolor ARGB zawierający informacje dotyczące wartości parametru alpha.
Parametry
x:int — Współrzędna x obrazu.
| |
y:int — Współrzędna y obrazu.
| |
color:uint — Kolor ARGB wykorzystany do wypełniania.
|
Przykład ( Sposób korzystania z tego przykładu )
(10, 10)
— w taki sposób, że wszystkie kolory zgodne z kolorem w tym punkcie przyjmują kolor czerwony.
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 | () | metoda |
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Określa prostokąt docelowy, na który ma wpływ wywołanie metody applyFilter()
, jeżeli jest podany obiekt BitmapData, prostokąt źródłowy oraz obiekt filtra.
Na przykład filtr rozmycia ma wpływ na obszar większy niż rozmiar oryginalnego obrazu. Obraz wielkości 100 x 200 pikseli filtrowany przez domyślną instancję BlurFilter, gdzie blurX = blurY = 4
generuje prostokąt docelowy o współrzędnych (-2, -2, 104, 204)
. Metoda generateFilterRect()
pozwala na wczesne poznanie rozmiaru prostokąta docelowego, aby możliwe było określenie rozmiaru obrazu docelowego przed przeprowadzaniem operacji filtrowania.
Niektóre filtry przycinają prostokąt docelowy w oparciu o rozmiar obrazu źródłowego. Na przykład wewnętrzna właściwość DropShadow
nie generuje wyniku większego niż jego obraz źródłowy. W przypadku tego API obiekt BitmapData jest wykorzystywany jako granice źródłowe a nie jako parametr źródłowy rect
.
Parametry
sourceRect:Rectangle — Prostokąt definiujący obszar obrazu źródłowego do wykorzystania jako materiał do wprowadzenia.
| |
filter:BitmapFilter — Obiekt filtra wykorzystywany do obliczenia prostokąta docelowego.
|
Rectangle — Prostokąt docelowy obliczony przy użyciu obrazu, parametru sourceRect oraz filtra.
|
Zgłasza
TypeError — Właściwość sourceRect lub filtr ma wartość null.
|
Przykład ( Sposób korzystania z tego przykładu )
generateFilterRect()
w celu określenia obszaru prostokątnego, który zostanie zajęty przez obiekt po zastosowaniu filtra rozmycia. Rezultaty metody generateFilterRect()
są generowane przez funkcję 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()
nie stosuje filtra. W celu aplikacji filtra należy wywołać metodę applyFilter()
.
getColorBoundsRect | () | metoda |
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Określa obszar prostokątny, który albo w pełni pokrywa wszelkie piksele określonego koloru wewnątrz obrazu bitmapowego (jeżeli parametr findColor
jest ustawiony na wartość true
), lub w pełni pokrywa wszelkie piksele, które nie zawierają określonego koloru (jeżeli parametr findColor
jest ustawiony na wartość false
).
Przykładowo, jeżeli konieczne jest określenie prostokąta posiadanego obrazu źródłowego, który zawiera kanał alpha inny niż zero, należy przekazać (mask: 0xFF000000, kolor: 0x00000000
jako parametry. Jeżeli parametr findColor
jest ustawiony na wartośćtrue
, wówczas w całym obrazie poszukiwane są piksele, których parametr (value & mask) == color
(gdzie właściwość value
jest wartością koloru pikseli). Jeżeli parametr findColor
jest ustawiony na wartość false
, wówczas w całym obrazie poszukiwane są granice pikseli, których właściwość (value & mask) != color
(gdzie właściwość value
jest wartością koloru pikseli). W celu określenia białej przestrzeni wokół obrazu należy podać parametry {mask: 0xFFFFFFFF, color: 0xFFFFFFFF}
w celu odnalezienia granic pikseli innych niż białe.
Parametry
mask:uint — Wartość szesnastkowa określająca bity koloru ARGB do wzięcia pod uwagę. Wartość koloru jest połączona z tą wartością szesnastkową przy użyciu operatora & (bitowe "I").
| |
color:uint — Wartość szesnastkowa, określająca kolor ARGB w celu dopasowania (jeżeli właściwość findColor jest ustawiona na wartość true ) lub niedopasowania (jeżeli właściwość findColor jest ustawiona na wartość false ).
| |
findColor:Boolean (default = true ) — Jeżeli wartość wynosi true , wówczas zwracane są granice wartości koloru w obrazie. Jeżeli wartość wynosi false , wówczas zwracane są granice gdzie nie ma koloru na obrazie.
|
Rectangle — Obszar obrazu o określonym kolorze.
|
Przykład ( Sposób korzystania z tego przykładu )
getColorBoundsRect()
w celu określenia prostokąta, w którym piksele mają kolor czerwony (0xFF0000), a potem wywołanie tej samej metody w celu określenia prostokąta, w którym piksele nie mają koloru czerwonego (poprzez ustawienie parametru findColor
na wartość 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 | () | metoda |
public function getPixel(x:int, y:int):uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Zwraca liczbę całkowitą, która reprezentuje wartość RGB piksela z obiektu BitmapData w określonym punkcie (x, y). Metoda getPixel()
zwraca nieprzemnożoną wartość piksela. Nie jest zwracana informacja dotycząca wartości parametru alpha.
Wszystkie piksele obiektu BitmapData są przechowywane jako wstępnie przemnożone wartości kolorów. Wartość wstępnie przemnożona koloru jest wartością kanałów koloru czerwonego, zielonego i niebieskiego przemnożoną przez wartość alpha. Na przykład jeżeli wartość alhpa wynosi 0, wówczas wartości kanałów RGB również wynoszą 0, niezależnie od ich wartości nieprzemnożonych. Tego rodzaju utrata danych może spowodować problemy w trakcie wykonywania operacji. Wszystkie metody BitmapData pobierają i zwracają wartości nieprzemnożone. Reprezentacja pikseli wewnętrznych jest konwertowana z wartości wstępnie przemnożonych do wartości nieprzemnożonych przed zwróceniem jako wartość. W trakcie operacji ustawiania wartość piksela jest wstępnie przemnażana przed ustawieniem surowego piksela obrazu.
Parametry
x:int — Położenie x piksela.
| |
y:int — Położenie y piksela.
|
uint — Liczba reprezentująca wartość RGB piksela. Jeżeli współrzędne (x, y) znajdują się poza granicami obrazu, metoda zwraca wartość 0.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
getPixel()
w celu określenia wartości koloru w górnym-lewym pikselu:
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 | () | metoda |
public function getPixel32(x:int, y:int):uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Zwraca wartość koloru ARGB, która zawiera dane kanału alfa i dane RGB. Ta metoda jest podobna do metody getPixel()
, która zwraca kolor RGB bez wartości kanału alpha.
Wszystkie piksele obiektu BitmapData są przechowywane jako wstępnie przemnożone wartości kolorów. Wartość wstępnie przemnożona koloru jest wartością kanałów koloru czerwonego, zielonego i niebieskiego przemnożoną przez wartość alpha. Na przykład jeżeli wartość alhpa wynosi 0, wówczas wartości kanałów RGB również wynoszą 0, niezależnie od ich wartości nieprzemnożonych. Tego rodzaju utrata danych może spowodować problemy w trakcie wykonywania operacji. Wszystkie metody BitmapData pobierają i zwracają wartości nieprzemnożone. Reprezentacja pikseli wewnętrznych jest konwertowana z wartości wstępnie przemnożonych do wartości nieprzemnożonych przed zwróceniem jako wartość. W trakcie operacji ustawiania wartość piksela jest wstępnie przemnażana przed ustawieniem surowego piksela obrazu.
Parametry
x:int — Położenie x piksela.
| |
y:int — Położenie y piksela.
|
uint — Liczba reprezentująca wartość RGB piksela. Jeżeli współrzędne (x, y) znajdują się poza granicami obrazu, metoda zwraca wartość 0.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
getPixel32()
w celu określenia wartości koloru w górnym-lewym pikselu, a potem określenia wartości szesnastkowych dla każdego składnika koloru (alpha, czerwony, zielony i niebieski):
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 | () | metoda |
public function getPixels(rect:Rectangle):ByteArray
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Generuje tablicę bajtów na podstawie prostokątnego obszaru pikseli. Zapisuje liczbę całkowitą bez znaku (32-bitową wartość nieprzemnożoną pikseli) dla każdego piksela w tablicy bajtów.
Parametry
rect:Rectangle — Obszar prostokątny w obecnym obiekcie BitmapData.
|
ByteArray — Obiekt ByteArray reprezentujący piksele w danym obiekcie Rectangle.
|
Zgłasza
TypeError — Właściwość rect ma wartość null.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
getPixels()
w celu wypełnienia obiektu ByteArray wartościami pikseli obiektu 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 | () | metoda |
public function getVector(rect:Rectangle):Vector.<uint>
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Generuje tablicę wektorów na podstawie prostokątnego obszaru pikseli. Zwraca obiekt Vector zawierający liczby całkowite bez znaku (32-bitowe nieprzemnożone wartości pikseli) dla określonego prostokąta.
Parametry
rect:Rectangle — Obszar prostokątny w obecnym obiekcie BitmapData.
|
Vector.<uint> — Obiekt Vector reprezentujący dany obiekt Rectangle.
|
Zgłasza
TypeError — Właściwość rect ma wartość null.
|
histogram | () | metoda |
public function histogram(hRect:Rectangle = null):Vector.<Vector.<Number>>
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Oblicza histogram 256 wartości binarnych obiektu BitmapData. Metoda zwraca obiekt Vector zawierający cztery obiekty Vector.Instancje <Number> (cztery obiekty Vector, które zawierają obiekty Number). Cztery instancje Vector reprezentują w kolejności składnik czerwony, zielony, niebieski i kanał alfa. Każda instancja Vector zawiera 256 wartości, które reprezentują liczbę wystąpień dla pojedynczej wartości składnika (z zakresu od 0 do 255).
Parametry
hRect:Rectangle (default = null ) — Obszar obiektu BitmapData do wykorzystania.
|
Vector.<Vector.<Number>> |
hitTest | () | metoda |
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Uaktywnia wykrywanie pikseli między obrazem bitmapowym a punktem, prostokątem lub innym obrazem bitmapowym. Do wykrycia dochodzi, gdy punkt lub prostokąt pokrywa piksel nieprzezroczysty lub dwa nachodzące na siebie nieprzezroczyste piksele. Rozciąganie, obracanie oraz żadne inne transformacje żadnego z obiektów nie są brane pod uwagę przy przeprowadzaniu testu trafień.
Jeżeli obraz jest nieprzezroczysty, wówczas jest uznawany w tej metodzie za prostokąt w pełni nieprzezroczysty. Oba obrazy muszą być przezroczyste przy przeprowadzaniu testowania trafień na poziomie pikseli przy rozważaniu przezroczystości. Przy testowaniu dwóch obrazów przezroczystych, progowe parametry alpha kontrolują które wartości kanału alpha (z zakresu od 0 do 255) są uważane za nieprzezroczyste.
Parametry
firstPoint:Point — Położenie górnego lewego narożnika obrazu BitmapData w dowolnym układzie współrzędnych. Ten sam układ współrzędnych jest wykorzystywany przy definiowaniu parametru secondBitmapPoint .
| |
firstAlphaThreshold:uint — Najmniejsza wartość kanału alpha jest traktowana jako wartość nieprzezroczystości dla tego testu trafień.
| |
secondObject:Object — Obiekt Rectangle, Point, Bitmap lub BitmapData.
| |
secondBitmapDataPoint:Point (default = null ) — Punkt definiujący położenie pikseli w drugim obiekcie BitmapData. Należy wykorzystać ten parametr, tylko w przypadku gdy wartością właściwości secondObject jest obiekt BitmapData.
| |
secondAlphaThreshold:uint (default = 1 ) — Najmniejsza wartość kanału alpha jest traktowana jako wartość nieprzezroczystości w drugim obiekcie BitmapData. Należy wykorzystać ten parametr, tylko w przypadku gdy wartością właściwości secondObject jest obiekt BitmapData oraz oba obiekty BitmapData są przezroczyste.
|
Boolean — Wartość true przy wystąpieniu trafienia; wartość false w innym przypadku.
|
Zgłasza
ArgumentError — Parametr secondObject nie jest obiektem Point, Rectangle, Bitmap lub BitmapData.
| |
TypeError — Właściwość firstPoint ma wartość null.
|
Przykład ( Sposób korzystania z tego przykładu )
hitTest()
z obiektem Point jako obiekt secondObject
. Przy pierwszym wywołaniu obiekt Point definiuje górny lewy narożnik obiektu BitmapData, który nie jest nieprzezroczysty, zaś w drugim wywołaniu obiekt Point definiuje centrum obiektu BitmapData, które jest nieprzezroczysty.
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 | () | metoda |
public function lock():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Blokuje obraz, co powoduje, że wszelkie obiekty odwołujące się do obiektu BitmapData, np. obiekty Bitmap, nie są aktualizowane w odpowiedzi na zmiany obiektu BitmapData. W celu podwyższenia wydajności należy stosować tą metodę wraz z metodą unlock()
przed i po wielokrotnych wywołaniach do metody setPixel()
i setPixel32()
.
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
bitmapData
obiektu Bitmap picture
. Następnie wywoływana jest metoda lock()
przed wywołaniem skomplikowanej funkcji własnej complexTransformation()
, która modyfikuje obiekt BItmapData. (Obiekt picture
oraz funkcja complexTransformation()
nie są zdefiniowane w tym przykładzie.) Nawet w przypadku gdy funkcja complexTransformation()
aktualizuje właściwość bitmapData
obiektu picture
, zmiany nie są odzwierciedlone do momentu wywołania metody unlock()
obiektu bitmapData
.
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
merge | () | metoda |
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Wykonuje mieszanie poszczególnych kanałów z obrazu źródłowego do obrazu docelowego. Dla każdego kanału i każdego piksela nowa wartość jest obliczana na podstawie wartości kanałów pikseli źródłowych i docelowych. Przykładowo w kanale koloru czerwonego, nowa wartość jest obliczana w następujący sposób (gdzie właściwość redSrc
jest wartością kanału koloru czerwonego w obrazie źródłowym, zaś właściwość redDest
jest wartością kanału czerwonego na odpowiadającym pikselu obrazu docelowego):
nowy redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;
Wartości właściwości redMultiplier
, greenMultiplier
, blueMultiplier
oraz alphaMultiplier
są przelicznikami wykorzystywanymi względem każdego kanału kolorów. Należy zastosować wartość szesnastkową w graniach od 0
do 0x100
(256), gdzie 0
określa pełną wartość ze źródła wykorzystaną końcowo, 0x100
określa wykorzystanie pełnej wartości ze źródła, zaś liczby pomiędzy określają wykorzystanie mieszania (jak na przykład 0x80
dla wartości 50%).
Parametry
sourceBitmapData:BitmapData — Wejściowy obraz bitmapowy do wykorzystania. Obrazem źródłowym może być inny obiekt BitmapData lub może się on odwoływać do obecnego obiektu BitmapData.
| |
sourceRect:Rectangle — Prostokąt definiujący obszar obrazu źródłowego do wykorzystania jako materiał do wprowadzenia.
| |
destPoint:Point — Punkt wewnątrz obrazu docelowego (obecna instancja BitmapData) odpowiadający górnemu lewemu narożnikowi prostokąta.
| |
redMultiplier:uint — Wartość w jednostkach szesnastkowych, przez którą przemnażana jest wartość kanału koloru czerwonego.
| |
greenMultiplier:uint — Wartość w jednostkach szesnastkowych, przez którą przemnażana jest wartość kanału koloru zielonego.
| |
blueMultiplier:uint — Wartość w jednostkach szesnastkowych, przez którą przemnażana jest wartość kanału koloru niebieskiego.
| |
alphaMultiplier:uint — Wartość w jednostkach szesnastkowych, przez którą przemnażana jest wartość przezroczystości alpha.
|
Zgłasza
TypeError — Właściwości sourceBitmapData, sourceRect lub destPoint mają wartość null.
|
Przykład ( Sposób korzystania z tego przykładu )
merge()
, powodując scalenie pikseli drugiego obiektu BitmapData z pikselami pierwszego obiektu BitmapData, ale tylko w określonym obszarze prostokątnym.
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 | () | metoda |
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Wypełnia obraz pikselami stanowiącymi losowy szum.
Parametry
randomSeed:int — Wartość początkowa generatora liczb pseudolosowych do wykorzystania. Przy zachowaniu tych samych wartości wszystkich innych parametrów możliwe jest generowanie różnych wyników pseudolosowych poprzez zmienianie wartości początkowej generatora liczb pseudolosowych. Funkcja szumu jest funkcją odwzorowującą, a nie prawdziwą funkcją losową, zatem dla tej samej wartości początkowej generatora liczb pseudolosowych zwraca zawsze te same wyniki.
| |
low:uint (default = 0 ) — Najniższa wartość możliwa do wygenerowania dla każdego kanału (od 0 do 255).
| |
high:uint (default = 255 ) — Najwyższa wartość możliwa do wygenerowania dla każdego kanału (od 0 do 255).
| |
channelOptions:uint (default = 7 ) — Liczba, która może być kombinacją każdej z czterech wartości kanałów kolorów (BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN , BitmapDataChannel.ALPHA ). Możliwe jest wykorzystanie operatora logicznego LUB (| ) w celu połączenia wartości kanałów.
| |
grayScale:Boolean (default = false ) — Wartość Boolean. Jeżeli wartość true , wówczas tworzony jest obraz w skali szarości poprzez ustawienie wszystkich kanałów kolorów na tę samą wartość. Ustawienie tego parametru na wartość true nie ma wpływu na wybór kanału alpha.
|
Powiązane elementy interfejsu API
flash.display.BitmapDataChannel.BLUE
flash.display.BitmapDataChannel.GREEN
flash.display.BitmapDataChannel.ALPHA
Przykład ( Sposób korzystania z tego przykładu )
noise()
względem obu. Przy tej operacji parametr grayscale
jest ustawiony na wartość false
przy wywołaniu metody noise()
względem pierwszego obiektu, oraz ustawiony na wartość true
przy wywołaniu metody noise()
względem drugiego.
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 | () | metoda |
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Ponownie odwzorowuje wartości kanałów kolorów w obrazie zawierającym maksymalnie cztery tablice dotyczące kolorów — po jednej na każdy kanał.
Środowisko wykonawcze Flash realizuje poniższe kroki w celu generowania obrazu wynikowego:
- Po obliczeniu wartości koloru czerwonego, niebieskiego oraz wartości alpha są dodawane razem przy zastosowaniu standardowej arytmetyki 32-bitowych liczb całkowitych.
- Wartości kanałów kolorów czerwonego, zielonego, niebieskiego oraz wartość alpha są wyodrębniane do oddzielnych wartości z zakresu 0 do 255. Te wartości są wykorzystywane przy wyszukiwaniu nowych wartości kolorów w odpowiedniej tablicy:
redArray
,greenArray
,blueArray
orazalphaArray
. Każda z tych tablic powinna zawierać 256 wartości. - Po pobraniu wszystkich czterech nowych wartości kanałów, są one łączone w standardową wartość ARGB, która będzie zastosowana względem pikseli.
Efekty międzykanałowe są obsługiwane przez tą metodę. Każda tablica wejścia może zawierać pełne 32-bitowe wartości i nie dochodzi do przesuwania gdy wartości są dodawane do siebie. Ta procedura nie obsługuje ściśnięcia poszczególnych kanałów.
Jeżeli nie została wybrana tablica dla kanału, wówczas kanał koloru jest kopiowany z obrazu źródłowego do obrazu docelowego.
Możliwe jest wykorzystanie tej metody do realizacji szerokiej gamy efektów, jak na przykład ogólnego odwzorowywania palety (pobieranie jednego kanału i jego konwersja do obrazu z zafałszowanymi kolorami). Możliwe jest również wykorzystanie tej metody w celu zastosowania różnych zaawansowanych algorytmów manipulacji kolorami, jak na przykład korekcja gamma, krzywe, poziomy oraz kwantyfikacja.
Parametry
sourceBitmapData:BitmapData — Wejściowy obraz bitmapowy do wykorzystania. Obrazem źródłowym może być inny obiekt BitmapData lub może się on odwoływać do obecnej instancji BitmapData.
| |
sourceRect:Rectangle — Prostokąt definiujący obszar obrazu źródłowego do wykorzystania jako materiał do wprowadzenia.
| |
destPoint:Point — Punkt wewnątrz obrazu docelowego (obecny obiekt BitmapData) odpowiadający górnemu lewemu narożnikowi prostokąta źródłowego.
| |
redArray:Array (default = null ) — Jeżeli właściwość redArray nie ma wartości null , wówczas red = redArray[source red value] else red = source rect value .
| |
greenArray:Array (default = null ) — Jeżeli właściwość greenArray nie ma wartości null , wówczas green = greenArray[source green value] else green = source green value .
| |
blueArray:Array (default = null ) — Jeżeli właściwość blueArray nie ma wartości null , wówczas blue = blueArray[source blue value] else blue = source blue value .
| |
alphaArray:Array (default = null ) — Jeżeli właściwość alphaArray nie ma wartości null , wówczas alpha = alphaArray[source alpha value] else alpha = source alpha value .
|
Zgłasza
TypeError — Właściwości sourceBitmapData, sourceRect lub destPoint mają wartość null.
|
Przykład ( Sposób korzystania z tego przykładu )
paletteMap()
w celu zamiany kolorów czerwonego i zielonego na dolnej prostokątnej połowie obiektu 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 | () | metoda |
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
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Generuje obraz szumu Perlina.
Algorytm generacji szumu Perlina interpoluje oraz łączy indywidualne funkcje szumu losowego (zwane oktawami) w pojedynczą funkcję tworzącą bardziej naturalny szum losowy. Tak jak w przypadku oktaw muzycznych, każda funkcja oktawy ma podwójną częstotliwość poprzedniej. Szum Perlina został opisany jako „suma fraktali szumu", ponieważ łączy on wiele zestawów danych szumu o różnych stopniach uszczegółowienia.
Możliwe jest wykorzystanie funkcji szumu Perlina w celu symulacji zjawisk naturalnych i krajobrazów, jak na przykład struktura drewna, chmury oraz stoki górskie. W większości przypadków efekt wyjściowy funkcji szumu Perlina nie jest wyświetlana bezpośrednio, lecz wykorzystywana do udoskonalenia obrazów oraz nadania im pseudo-losowych wariacji.
Proste funkcje cyfrowego szumu losowego często generują obrazy o ostrych, kontrastujących punktach. Tego typu ostry kontrast nie jest często spotykany w naturze. Algorytm szumu Perlina miesza wiele funkcji szumu, które operują na różnych stopniach szczegółowości. Algorytm powoduje mniejsze wariacje wśród wartości pikseli sąsiadujących.
Parametry
baseX:Number — Częstotliwość do wykorzystania w kierunku x. Przykładowo w celu wygenerowania szumu, który jest określony dla obrazu o wielkości 64 x 128, należy podać wartość 64 dla parametru baseX .
| |
baseY:Number — Częstotliwość do wykorzystania w kierunku y. Przykładowo w celu wygenerowania szumu, który jest określony dla obrazu o wielkości 64 x 128, należy podać wartość 128 dla parametru baseY .
| |
numOctaves:uint — Liczba oktaw lub indywidualnych funkcji szumu do połączenia w celu wygenerowania tego szumu. Większa liczba oktaw tworzy obrazy o wyższych detalach. Większa liczba oktaw wymaga również dłuższego czasu przetwarzania.
| |
randomSeed:int — Wartość początkowa generatora liczb pseudolosowych do wykorzystania. Przy zachowaniu tych samych wartości wszystkich innych parametrów możliwe jest generowanie różnych wyników pseudolosowych poprzez zmienianie wartości początkowej generatora liczb pseudolosowych. Funkcja szumu Perlina jest funkcją odwzorowującą, a nie prawdziwą funkcją losową, zatem dla tej samej wartości początkowej generatora liczb pseudolosowych zwraca zawsze te same wyniki.
| |
stitch:Boolean — Wartość Boolean. Jeżeli wartość true , wówczas metoda próbuje wygładzić krawędzie przejścia obrazu, w celu utworzenia bezproblemowych tekstur dla wzorów powtarzających się do wypełnienia bitmapy.
| |
fractalNoise:Boolean — Wartość Boolean. Jeżeli wartość true , wówczas metoda generuje szum fraktalny; w innym przypadku generuje turbulencję. Obraz zawierający turbulencję ma widoczne przerwy w gradiencie, co powoduje tworzenie lepszych efektów wizualnych obiektów o ostrych kształtach, jak na przykład płomienie i fale oceanu.
| |
channelOptions:uint (default = 7 ) — Liczba, która może być kombinacją każdej z czterech wartości kanałów kolorów (BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN , BitmapDataChannel.ALPHA ). Możliwe jest wykorzystanie operatora logicznego LUB (| ) w celu połączenia wartości kanałów.
| |
grayScale:Boolean (default = false ) — Wartość Boolean. Jeżeli wartość true , wówczas tworzony jest obraz w skali szarości poprzez ustawienie wszystkich kanałów kolorów na tę samą wartość. Ustawienie tego parametru na wartość true nie ma wpływu na wartość kanału alpha.
| |
offsets:Array (default = null ) — Tablica punktów odpowiadających przesunięciom x i y dla każdej oktawy. Poprzez manipulację wartości przesunięcia możliwe jest płynne przewijanie warstw obrazu perlinNoise. Każdy punkt tablicy przesunięć wpływa na określoną funkcję szumu oktawy.
|
Przykład ( Sposób korzystania z tego przykładu )
perlinNoise()
w celu wygenerowania efektów akwareli koloru czerwonego i niebieskiego:
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 | () | metoda |
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Przeprowadza operację rozpuszczania na poziomie pikseli - albo z obrazu źródłowego do obrazu docelowego, albo przy użyciu jednego obrazu. Środowisko wykonawcze Flash wykorzystuje wartość randomSeed
w celu wygenerowania operacji losowego rozpuszczania pikseli. Wartość zwrotna funkcji musi zostać podana w kolejnych wywołaniach w celu kontynuowania operacji rozpuszczania pikseli aż do zakończenia.
Jeżeli obraz źródłowy nie równa się obrazowi docelowemu, wówczas piksele są kopiowane ze źródła do celu przez wykorzystanie wszelkich właściwości. Proces ten pozwala na rozpuszczanie z pustego obrazu do obrazu w całości zapełnionego.
Jeżeli obrazy źródłowy i docelowy są takie same, wówczas piksele są wypełniane zgodnie z parametrem color
. Proces ten pozwala na rozpuszczanie z dala od obrazu w całości zapełnionego. W tym trybie docelowy parametr point
jest ignorowany.
Parametry
sourceBitmapData:BitmapData — Wejściowy obraz bitmapowy do wykorzystania. Obrazem źródłowym może być inny obiekt BitmapData lub może się on odwoływać do obecnej instancji BitmapData.
| |
sourceRect:Rectangle — Prostokąt definiujący obszar obrazu źródłowego do wykorzystania jako materiał do wprowadzenia.
| |
destPoint:Point — Punkt wewnątrz obrazu docelowego (obecna instancja BitmapData) odpowiadający górnemu lewemu narożnikowi prostokąta.
| |
randomSeed:int (default = 0 ) — Wartość początkowa generatora liczb pseudolosowych używana do rozpoczęcia rozpuszczania na poziomie pikseli.
| |
numPixels:int (default = 0 ) — Domyślna wartość to 1/30 obszaru źródłowego (szerokość x wysokość).
| |
fillColor:uint (default = 0 ) — Wartość koloru ARGB wykorzystywana do wypełnienia pikseli, których wartość źródłowa jest równa docelowej.
|
int — Nowa wartość początkowa generatora liczb pseudolosowych do wykorzystania w kolejnych wywołaniach.
|
Zgłasza
TypeError — Właściwości sourceBitmapData, sourceRect lub destPoint mają wartość null.
| |
TypeError — Właściwość numPixels ma wartość ujemną.
|
Przykład ( Sposób korzystania z tego przykładu )
pixelDissolve()
w celu konwersji szarego obiektu BitmapData na kolor czerwony poprzez rozpuszczanie 40 pikseli w danym momencie, do czasu zmiany kolorów przez wszystkie piksele:
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 | () | metoda |
public function scroll(x:int, y:int):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Przewija obraz o określoną ilość (x, y) pikseli. Obszary krawędzi poza polem przewijania są pozostawione bez zmian.
Parametry
x:int — Stopień przewinięcia w poziomie.
| |
y:int — Stopień przewinięcia w pionie.
|
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function setPixel(x:int, y:int, color:uint):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Ustawia pojedynczy piksel obiektu BitmapData. Obecna wartość kanału alpha pikseli obrazu jest zachowana w trakcie tej operacji. Parametr wartości RGB koloru jest traktowany jako wartość nieprzemnożona koloru.
Uwaga: W celu podwyższenia wydajności w trakcie wielokrotnego korzystania z metod setPixel()
i setPixel32()
pomocne jest wywołanie metody lock()
przed wywołaniem metody setPixel()
i setPixel32()
oraz wywołanie unlock()
po dokonaniu zmian piksela. Proces ten zapobiega aktualizacji obiektów odwołujących się do instancji BitmapData zanim nie zostanie zakończone wprowadzanie zmian piksela.
Parametry
x:int — Położenie x piksela, którego wartości ulegają zmianie.
| |
y:int — Położenie y piksela, którego wartości ulegają zmianie.
| |
color:uint — Wynikowy kolor RGB pikseli.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
setPixel()
w celu narysowania czerwonej linii w obiekcie 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 | () | metoda |
public function setPixel32(x:int, y:int, color:uint):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Ustawia wartości koloru i przezroczystości alfa jednego piksela w obiekcie typu BitmapData. Metoda ta jest podobna do metody setPixel()
; główną różnicą jest fakt, iż metoda setPixel32()
pobiera wartość ARGB koloru, która zawiera informację dotyczącą kanału alpha.
Wszystkie piksele obiektu BitmapData są przechowywane jako wstępnie przemnożone wartości kolorów. Wartość wstępnie przemnożona koloru jest wartością kanałów koloru czerwonego, zielonego i niebieskiego przemnożoną przez wartość alpha. Na przykład jeżeli wartość alhpa wynosi 0, wówczas wartości kanałów RGB również wynoszą 0, niezależnie od ich wartości nieprzemnożonych. Tego rodzaju utrata danych może spowodować problemy w trakcie wykonywania operacji. Wszystkie metody BitmapData pobierają i zwracają wartości nieprzemnożone. Reprezentacja pikseli wewnętrznych jest konwertowana z wartości wstępnie przemnożonych do wartości nieprzemnożonych przed zwróceniem jako wartość. W trakcie operacji ustawiania wartość piksela jest wstępnie przemnażana przed ustawieniem surowego piksela obrazu.
Uwaga: W celu podwyższenia wydajności w trakcie wielokrotnego korzystania z metod setPixel()
i setPixel32()
pomocne jest wywołanie metody lock()
przed wywołaniem metody setPixel()
i setPixel32()
oraz wywołanie unlock()
po dokonaniu zmian piksela. Proces ten zapobiega aktualizacji obiektów odwołujących się do instancji BitmapData zanim nie zostanie zakończone wprowadzanie zmian piksela.
Parametry
x:int — Położenie x piksela, którego wartości ulegają zmianie.
| |
y:int — Położenie y piksela, którego wartości ulegają zmianie.
| |
color:uint — Wynikowy kolor RGB pikseli Jeżeli bitmapa jest nieprzezroczysta, wówczas sekcja przezroczystości alpha wartości koloru jest pomijana.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
setPixel32()
w celu narysowania przezroczystej (alpha == 0x60) czerwonej linii w obiekcie BitmapData:
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 | () | metoda |
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Konwertuje tablicę bajtów na prostokątny obszar pikseli. Dla każdego piksela metoda ByteArray.readUnsignedInt()
jest wywoływana, zaś zwrócona wartość jest zapisana w pikselu. Jeżeli tablica bajtów kończy się przed zapisaniem całego prostokąta, wówczas funkcja jest zwracana. Dane w tablicy bajtów powinny być 32-bitowymi wartościami ARGB pikseli. Wyszukiwanie nie jest przeprowadzane na tablicy bajtów przed lub po odczytaniu pikseli.
Parametry
rect:Rectangle — Określa prostokątny obszar obiektu BitmapData.
| |
inputByteArray:ByteArray — Obiekt ByteArray składa się z 32-bitowych nieprzemnożonych wartości pikseli do wykorzystania w obszarze prostokątnym.
|
Zgłasza
EOFError — Obiekt inputByteArray nie zawiera dość danych do wypełnienia prostokąta rect . Metoda wypełnia maksymalną możliwą ilość pikseli przed zgłoszeniem wyjątku.
| |
TypeError — Właściwości rect lub inputByteArray mają wartość null.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
getPixels()
oraz setPixels()
w celu skopiowania pikseli z jednego obiektu BitmapData do drugiego:
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 | () | metoda |
public function setVector(rect:Rectangle, inputVector:Vector.<uint>):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Przekształca obiekt Vector w prostokątny region danych pikselowych. Dla każdego piksela odczytywany jest element tablicy Vector, który następnie zapisywany jest do piksela w obiekcie BitmapData. Dane w tablicy Vector powinny być 32-bitowymi wartościami ARGB pikseli.
Parametry
rect:Rectangle — Określa prostokątny obszar obiektu BitmapData.
| |
inputVector:Vector.<uint> — Obiekt Vector składa się z 32-bitowych nieprzemnożonych wartości pikseli do wykorzystania w obszarze prostokątnym.
|
Zgłasza
RangeError — Tablica Vector jest zbyt mała, by pomieścić wszystkie odczytane dane pikseli.
|
threshold | () | metoda |
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Testuje wartości pikseli obrazu ze względu na określony próg i określa nowe wartości kolorów pikseli zweryfikowanych pozytywnie. Poprzez zastosowanie metody threshold()
możliwe jest izolowanie oraz zamiana zakresów kolorów w obrazie oraz przeprowadzenie innych operacji logicznych na pikselach obrazu.
Logika testów metody threshold()
przedstawia się następująco:
- Jeżeli
((pixelValue & maska) operacja (próg & maska))
, wówczas piksel jest ustawiany zgodnie z właściwościącolor
; - W innym przypadku, gdy
copySource == true
, wówczas piksel jest ustawiany na odpowiadającą wartość pikseli z właściwościsourceBitmap
.
Parametr operation
określa operatora porównania do wykorzystania w teście progowym. Przykładowo, zastosowanie operatora "==" jako parametru operation
możliwa jest izolacja określonej wartości koloru na obrazie. Również poprzez wykorzystanie parametru {operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000}
możliwe jest ustawienie wszystkich pikseli docelowych na pełną przezroczystość w przypadku, gdy wartość alpha pikseli obrazu źródłowego wynosi mniej niż 0x7F. Można wykorzystać tą technikę przy przejściach animowanych i innych efektach.
Parametry
sourceBitmapData:BitmapData — Wejściowy obraz bitmapowy do użycia. Obrazem źródłowym może być inny obiekt BitmapData lub może się on odwoływać do obecnej instancji BitmapData.
| |
sourceRect:Rectangle — Prostokąt definiujący obszar obrazu źródłowego do wykorzystania jako materiał do wprowadzenia.
| |
destPoint:Point — Punkt wewnątrz obrazu docelowego (obecna instancja BitmapData) odpowiadający górnemu lewemu narożnikowi prostokąta.
| |
operation:String — Jeden z następujących operatorów, podany jako obiekt String: "<", "<=", ">", ">=", "==", "!="
| |
threshold:uint — Wartość, względem której testowany jest każdy piksel w celu ustalenia, czy spełniony bądź przekroczony został próg.
| |
color:uint (default = 0 ) — Wartość koloru, na którą piksel został ustawiony po pomyślnej weryfikacji testu progowego. Wartość domyślna to 0x00000000.
| |
mask:uint (default = 0xFFFFFFFF ) — Maska do wykorzystania w celu izolacji składników koloru.
| |
copySource:Boolean (default = false ) — Jeżeli wartość true , wówczas wartości pikseli z obrazu źródłowego są kopiowane do docelowego, gdy test progowy zakończy się niepowodzeniem. Jeżeli wartość false , wówczas obraz źródłowy nie jest kopiowany, gdy test progowy zakończy się niepowodzeniem.
|
uint — Liczba zmienionych pikseli.
|
Zgłasza
TypeError — Właściwości sourceBitmapData, sourceRect, destPoint lub operation mają wartość null.
| |
ArgumentError — Ciąg znaków operacji nie jest prawidłową operacją.
|
Przykład ( Sposób korzystania z tego przykładu )
perlinNoise()
w celu dodania niebiesko-czerwonego wzoru do jednego obiektu BitmapData, a następnie wykorzystanie metody threshold()
w celu skopiowania tych pikseli z pierwszego obiektu BitmapData to drugiego, z zastąpieniem pikseli o wartości koloru czerwonego większej niż 0x80 (50%) pikselami ustawionymi na przezroczysty kolor czerwony (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 | () | metoda |
public function unlock(changeRect:Rectangle = null):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 9, AIR 1.0 |
Odblokowuje obraz, co powoduje, że wszelkie obiekty odwołujące się do obiektu BitmapData, np. obiekty Bitmap, są aktualizowane w odpowiedzi na zmiany obiektu BitmapData. W celu podwyższenia wydajności należy stosować tą metodę wraz z metodą lock()
przed i po wielokrotnych wywołaniach do metody setPixel()
i setPixel32()
.
Parametry
changeRect:Rectangle (default = null ) — Zmieniony obszar obiektu BitmapData. Jeżeli nie jest zdefiniowana wartość dla tego parametru, wówczas cały obszar obiektu BitmapData jest uznany za zmieniony. Ten parametr wymaga aplikacji Flash Player w wersji 9.0.115.0 lub nowszej.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
bitmapData
obiektu Bitmap picture
. Następnie wywoływana jest metoda lock()
przed wywołaniem skomplikowanej funkcji własnej complexTransformation()
, która modyfikuje obiekt BItmapData. (Obiekt picture
oraz funkcja complexTransformation()
nie są zdefiniowane w tym przykładzie.) Nawet w przypadku gdy funkcja complexTransformation()
aktualizuje właściwość bitmapData
obiektu picture
, zmiany nie są odzwierciedlone do momentu wywołania metody unlock()
obiektu bitmapData
.
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
threshold()
. Zadanie to jest przeprowadzane poprzez wykonanie następujących kroków:
- Tworzona jest właściwość
url
, która jest miejscem położenia oraz nazwą pliku obrazu. - Konstruktor klas tworzy obiekt Loader, który z kolei tworzy instancję detektora zdarzeń, zaś ten jest wywoływany gdy metoda
completeHandler()
zakończy manipulację obrazu. - Obiekt URLRequest
request
jest następnie przekazywany do metodyloader.load()
, który ładuje obraz poprzez wykorzystanie obiektu wyświetlania. - Obraz jest wówczas umieszczany na liście wyświetlania, która wyświetla obraz na ekranie na współrzędnych x = 0, y = 0.
- Metoda
completeHandler()
przeprowadza wówczas następujące zadania.- Tworzy drugi obiekt Loader, wraz z obiektem Bitmap, który jest inicjalizowany przy pomocy obiektu Loader.
- Tworzy dugi obiekt Bitmap
duplicate
, który z kolei wywołuje metodęduplicateImage()
, tworzącą duplikat oryginalnego obrazu. - Tworzy obiekt BitmapData, który jest powiązany z obiektem
duplicate
obiektu BitmapData. - Tworzy nowy obiekt Rectangle inicjalizowany z tymi samymi współrzędnymi, szerokością i wysokością jak obraz oryginalny.
- Tworzy nowy obiekt Point, którego współrzędne domyślne to x = 0, y = 0.
- Tworzy następujące zmienne:
operation
— Stosuje nowy kolor, gdy wartość progowa jest większa lub równa oryginałowi.threshold
— Wartość, wobec której każdy piksel jest porównywany (w tym przykładzie jest ustawiona na kolor jasnoszary z wartością alpha 0xCC).color
— kolor, na który zostaną ustawione piksele spełniające warunek progowy; w tym wypadku jest to jednolity kolor żółty.mask
— Kolor dokładnie przeciwny (przezroczysty kolor niebieski).copySource
— Ustawiona na wartośćfalse
wskazuje, iż wartości pikseli nie są kopiowane w przypadku, gdy wartość progowa nie zostanie zweryfikowana pozytywnie. Ta wartość nie ma znaczenia, ponieważ obraz jest zduplikowany i wyłącznie piksele które zostały pozytywnie zweryfikowane w teście progowym są zmieniane.
- Wywołuje metodę
threshold()
wykorzystując powyższe zmienne. Końcowe równanie progowe wygląda następująco:jeżeli (obecna wartość pikseli & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) wówczas ustaw wartość pikseli na 0xFFFFFF00
.
Uwagi:
- Plik SWF musi być skompilowany z zabezpieczeniem odtwarzania lokalnego ustawionym na tylko do pliki dostępne lokalnie.
- Dla zilustrowania tego przykładu konieczne jest umieszczenie pliku o nazwie Image.gif w tym samym katalogu, w którym znajduje się plik SWF.
- Zalecane jest wykorzystanie obrazu o szerokości do 80 pikseli.
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, 12:06 PM Z