Kopiera bitmappsdataFlash Player 9 och senare, Adobe AIR 1.0 och senare Du kan använda olika metoder om du vill kopiera bitmappsdata mellan två bilder: clone(), copyPixels(), copyChannel() och draw(). 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. Metoden draw() ritar, eller återger, det grafiska innehållet från en källsprite, ett filmklipp eller andra 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() skickar du källobjektet (sprite, filmklipp eller andra visningsobjekt) som första parameter, vilket visas här: 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. |
|