Klasy Bitmap i BitmapData

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Główną klasą języka ActionScript 3.0 służąca do operowania na obrazach bitmapowych jest klasa Bitmap, która służy do wyświetlania obrazów bitmapowych na ekranie, oraz klasa BitmapData, która umożliwia dostęp do nieprzetworzonych danych obrazu w bitmapie i manipulowania nimi.

Omówienie klasy Bitmap

Jako podklasa klasy DisplayObject, klasa Bitmap jest główną klasą ActionScript 3.0 służącą do wyświetlania obrazów bitmapowych. Obrazy te mogą być wcześniej załadowane za pośrednictwem klasy flash.display.Loader lub utworzone dynamicznie za pomocą konstruktora Bitmap() . W przypadku ładowania obrazów z zewnętrznego źródła obiekty Bitmap mogą mieć wyłącznie jeden z formatów: GIF, JPEG lub PNG. Po utworzeniu instancji Bitmap może być ona uważana za obiekt opakowaniowy dla obiektu BitmapData, który musi zostać zrenderowany na stół montażowy. Ponieważ instancja Bitmap jest obiektem wyświetlanym, można względem niej zastosować wszystkie charakterystyki i funkcje obiektów wyświetlania w celu manipulowania tą instancją. W celu uzyskania dodatkowych informacji na temat pracy z obiektami wyświetlanymi należy zapoznać się z sekcją Programowanie wyświetlania .

Przyciąganie do pikseli i wygładzanie

Poza funkcjami wspólnymi dla wszystkich obiektów wyświetlanych, klasa Bitmap charakteryzuje się pewnymi funkcjami dodatkowymi, specyficznymi dla obrazów bitmap.

Właściwość pixelSnapping klasy Bitmap określa, czy obiekt Bitmap ma być przyciągany do najbliższego piksela. W przypadku tej właściwości akceptowana jest tylko jedna z trzech stałych zdefiniowanych w klasie PixelSnapping: ALWAYS , AUTO i NEVER .

Składnia stosowania przyciągania do piksela jest następująca:

myBitmap.pixelSnapping = PixelSnapping.ALWAYS;

W przypadku skalowania bitmapy zdarza się często, że staje się ona zamazana i zniekształcona. W celu zmniejszenia tego zniekształcenia należy użyć właściwości smoothing klasy BitmapData. Ta właściwość typu Boolean, ustawiona na wartość true , powoduje wygładzanie i antyaliasing pikseli obrazu po jego przeskalowaniu. Daje to efekt zwiększenia wyraźności i bardziej naturalnego wyglądu.

Klasa BitmapData

Klasę BitmapData, która znajduje się w pakiecie flash.display, można przyrównać do migawek foto pikseli zawartych w załadowanym lub dynamicznie utworzonym obrazie bitmapy. Migawka ta jest reprezentowana przez tablicę danych pikseli w obiekcie. Ponadto klasa BitmapData zawiera również serię wbudowanych metod, użytecznych przy tworzeniu i manipulowaniu danymi piksela.

Utworzenie instancji obiektu BitmapData jest możliwe za pomocą następującego kodu:

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

Parametry width i height określają szerokość bitmapy. W środowisku AIR 3 i programie Flash Player 11 usunięto ograniczenia obiektu BitmapData. Maksymalny rozmiar bitmapy zależy od systemu operacyjnego.

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.

Parametr transparent określa, czy dane bitmapy obejmują kanał alfa: tak ( true ) lub nie ( false ). Parametr fillColor jest to wartość wyrażająca kolor 32-bitowy określająca tło koloru jak również wartość przezroczystości (jeśli została ona ustawiona na wartość true ). Poniższy przykład opisuje tworzenie obiektu BitmapData z pomarańczowym tłem, którego przezroczystość wynosi 50 procent:

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

W celu zrenderowania utworzonego obiektu BitmapData na ekranie należy przypisać go lub opakować go w instancję Bitmap. W tym celu należy albo przekazać obiekt BitmapData jako parametr konstruktora obiektu Bitmap, albo przypisać go do właściwości bitmapData istniejącej instancji Bitmap. Ponadto konieczne jest również dodanie instancji Bitmap do listy wyświetlania przez wywołanie metody addChild() lub addChildAt() kontener obiektu wyświetlanego zawierającego instancję Bitmap. W celu uzyskania dodatkowych informacji na temat listy wyświetlania należy zapoznać się z sekcją Dodawanie obiektów wyświetlanych do listy wyświetlania .

Poniższy przykład opisuje tworzenie obiektu BitmapData z czerwonym wypełnieniem i wyświetlenie go w instancji Bitmap:

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