Klasserna Bitmap och BitmapData

Flash Player 9 och senare, Adobe AIR 1.0 och senare

När du arbetar med bitmappbilder är de viktigaste ActionScript 3.0-klasserna Bitmap, som används för att visa bitmappbilder på skärmen, och BitmapData, som används för att öppna och hantera bitmappbildens rådata.

Klassen Bitmap

Klassen Bitmapp, som är en underklass till klassen DisplayObject, är huvudklassen i ActionScript 3.0 för visning av bitmappsbilder. De här bilderna har kanske lästs in via klassen flash.display.Loader eller skapats dynamiskt med konstruktorn Bitmap() . När en bild läses in från en extern källa kan ett Bitmap-objekt bara använda GIF-, JPEG- eller PNG-bilder. När Bitmap-instansen instansierats betraktas den som en wrapper för ett BitmapData-objekt som måste återges på scenen. Eftersom en Bitmap-instans är ett visningsobjekt, kan alla egenskaper och funktioner för visningsobjekt också användas för att ändra en Bitmap-instans. Mer information om hur du arbetar med visningsobjekt finns i Visningsprogrammering .

Pixelfästning och utjämning

Klassen Bitmapp, har förutom de funktioner som är vanliga i alla visningsobjekt, vissa andra funktioner som är speciella för bitmappsbilder.

Egenskapen pixelSnapping för klassen Bitmap avgör om ett Bitmap-objekt fästs mot dess närmsta pixel eller inte. Den här egenskapen godkänner en av tre konstanter som definierats i klassen PixelSnapping: ALWAYS , AUTO och NEVER .

Syntax för pixelfästning är:

myBitmap.pixelSnapping = PixelSnapping.ALWAYS;

Bitmappsbilder som skalförändras blir ofta oskarpa och förvrängda. Du kan använda egenskapen smoothing för klassen BitmapData för att minska förvrängningen. Om den här booleska egenskapen har värdet true utjämnas eller kantutjämnas pixlarna i bilden när den skalförändras. Detta ger bilden ett klarare och mera naturligt utseende.

Klassen BitmapData

Klassen BitmapData, som finns i paketet flash.display, kan liknas vid en ögonblicksbild av de pixlar som ingår i en inläst eller dynamiskt skapad bitmappsbild. Ögonblicksbilden representeras av en array av pixeldata i objektet. Klassen BitmapData innehåller också en serie inbyggda metoder som kan vara bra när du skapar och ändrar pixeldata.

Använd följande kod när du instansierar ett BitmapData-objekt:

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

Parametrarna width och height anger bitmappens storlek. Från och med AIR 3 och Flash Player 11 har storleksgränserna för BitmapData-objektet tagits bort. Den största tillåtna storleken på en bitmapp beror på operativsystemet.

I AIR 1.5 och Flash Player 10 är maxstorleken för ett BitmapData-objekt 8 191 pixlar i bredd eller höjd, och det totala antalet pixlar får inte överskrida 16 777 215 pixlar. (Om ett BitmapData-objekt är 8 191 pixlar brett kan det därför bara vara 2 048 pixlar högt.) I Flash Player 9 och tidigare och i AIR 1.1 och tidigare är begränsningen 2 880 pixlar högt och 2 880 pixlar brett.

Parametern transparent anger om bitmappsdata ska innehålla en alfakanal ( true ) eller inte ( false ). Parametern fillColor är ett 32-bitarsvärde som anger bakgrundsfärgen och genomskinlighetsvärdet (om det är true ). I följande exempel skapas ett BitmapData-objekt med orange bakgrund som är 50 procent genomskinligt:

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

Om du vill återge ett nyligen skapat BitmapData-objekt på skärmen, kopplar du det eller omsluter du det i en Bitmap-instans. Detta gör du genom att skicka BitmapData-objektet som en parameter för objektets konstruktor, eller genom att koppla det till egenskapen BitmapData för en befintlig Bitmap-instans. Du måste också lägga till Bitmap-instansen i visningslistan genom att anropa metoderna addChild() eller addChildAt() för visningsobjektets behållare som ska innehålla Bitmap-instansen. Mer information om hur du arbetar med visningslistan finns i Lägga till visningsobjekt till visningslistan .

I följande exempel skapas ett BitmapData-objekt med röd fyllning som visas i en Bitmap-instans:

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