topical media & game development
#graphic-flex-image-effects-03-Flex-SetPixelsTest.ax
#graphic-flex-image-effects-03-Flex-SetPixelsTest.ax
[swf]
[flash]
flex
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
[SWF(width=1200, height=600, backgroundColor=0x000000)]
Combines two images by drawing alternating rows from each image using getPixels()/setPixels().
public class @ax-graphic-flex-image-effects-03-Flex-SetPixelsTest extends graphic_flex_image_effects_03_Flex_DualImageTest {
Called after images load by super class. This uses getPixels()/setPixels() to draw alternating
rows of loaded bitmaps into new image.
override protected function operateOnImages():void {
var width:uint = _bitmapData0.width;
var height:uint = _bitmapData0.height;
var newData:BitmapData = new BitmapData(width, height);
// the rectangle that will be used to draw a row
var rect:Rectangle = new Rectangle(0, 0, width, 1);
var bitmapData:BitmapData;
var bytes:ByteArray;
// runs through full height of loaded images
for (var row:uint = 0; row < height; row++) {
// alternates which image to draw the data from based on even/odd rows
bitmapData = (row % 2) == 0 ? _bitmapData0 : _bitmapData1;
rect.y = row;
bytes = bitmapData.getPixels(rect);
// necessary to set byte array back to 0 before reading in
bytes.position = 0;
newData.setPixels(rect, bytes);
}
// add the new bitmap
var bitmap:Bitmap = new Bitmap(newData);
addChild(bitmap);
bitmap.x = _bitmap1.x + _bitmap1.width;
}
}
}
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.