Du kan välja mellan olika metoder för att kopiera bitmappsdata från en bild till en annan:
clone()
,
copyPixels()
,
copyChannel()
,
draw()
eller
drawWithQuality()
(metoden
drawWithQuality
finns i Flash Player 11.3 och senare; AIR 3.3 och senare).
Som namnet anger kan du med metoden
clone()
klona, eller sampla, bitmappsdata mellan olika BitmapData-objekt. När metoden anropas returneras ett nytt BitmapData-objekt som är en exakt klon av den ursprungliga instans som det kopierats från.
I följande exempel klonas en kopia av en orange (överordnad) fyrkant och klonen placeras bredvid den ursprungliga överordnade fyrkanten:
import flash.display.Bitmap;
import flash.display.BitmapData;
var myParentSquareBitmap:BitmapData = new BitmapData(100, 100, false, 0x00ff3300);
var myClonedChild:BitmapData = myParentSquareBitmap.clone();
var myParentSquareContainer:Bitmap = new Bitmap(myParentSquareBitmap);
this.addChild(myParentSquareContainer);
var myClonedChildContainer:Bitmap = new Bitmap(myClonedChild);
this.addChild(myClonedChildContainer);
myClonedChildContainer.x = 110;
Med metoden
copyPixels()
kan du snabbt och lätt kopiera pixlar mellan olika BitmapData-objekt. Metoden tar en rektangulär ögonblicksbild (definieras av parametern
sourceRect
) av källbilden och kopierar den till ett annat rektangulärt område (av samma storlek). Platsen för den nyligen ”inklistrade” rektangeln definieras i parametern
destPoint
.
Metoden
copyChannel()
samplar ett fördefinierat färgkanalsvärde (alfa, röd, grön eller blå) från ett BitmapData-källobjekt och kopierar det till en kanal för ett BitmapData-destinationsobjekt. Anrop till den här metoden påverkar inte de andra kanalerna i destinationsobjektet.
Metoderna
draw()
och
drawWithQuality()
ritar (eller återger) det grafiska innehållet från en käll-sprite, ett filmklipp eller något annat visningsobjekt till en ny bitmapp. Om du använder parametrarna
matrix
,
colorTransform
,
blendMode
och destinationsparametern
clipRect
kan du ändra det sätt som den nya bitmappen återges på. Med den här metoden används vektorrenderaren i Flash Player och AIR för att generera data.
När du anropar
draw()
eller
drawWithQuality()
skickar du källobjektet (en sprite, ett filmklipp eller något annat visningsobjekt) som den första parametern, enligt nedanstående:
myBitmap.draw(movieClip);
Om några omformningar (färg, matris o.s.v.) har tillämpats på källobjektet efter att det ursprungligen lästs in, kopieras dessa inte över till det nya objektet. Om du vill kopiera omformningarna till den nya bitmappen måste du kopiera värdet för egenskapen
transform
från ursprungsobjektet till egenskapen
transform
för det bitmappsobjekt som använder det nya bitmappsobjektet.