package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.display.StageScaleMode; import flash.geom.Point; import flash.geom.Rectangle; /** * @author Dominic Beinenz */ [SWF(width='516', height='678', backgroundColor='#000000', frameRate='31')] public class BitmapSplitter extends Sprite { [Embed(source="../graphics/image.png")] private const image_png : Class; //_____________________________________________________________________________________________________________ // C O N S T A N T //============================================================================================================= private const PARTS_NUMBER_HORIZONTAL : uint = 5; private const PARTS_NUMBER_VERTICAL : uint = 8; private const PARTS_PADDING : uint = 4; //_____________________________________________________________________________________________________________ // V A R I A B L E S //============================================================================================================= private var _sourceBitmap : Bitmap; //_____________________________________________________________________________________________________________ // I N I T I A L I Z E //============================================================================================================= public function BitmapSplitter() { init(); createPieces(); } private function init() : void { stage.scaleMode = StageScaleMode.NO_SCALE; stage.showDefaultContextMenu = false; stage.stageFocusRect = false; _sourceBitmap = new image_png(); } //_____________________________________________________________________________________________________________ // P R I V A T E - F U N C T I O N S //============================================================================================================= private function createPieces() : void { var piecesNum : uint = PARTS_NUMBER_HORIZONTAL * PARTS_NUMBER_VERTICAL; for (var i : int = 0;i < piecesNum; i++) { var row : uint = Math.floor(i / PARTS_NUMBER_HORIZONTAL); var column : uint = i % PARTS_NUMBER_HORIZONTAL; createPieceBitmap(row, column); } } private function createPieceBitmap(row : uint, column : uint) : void { var copyRectX : uint = getPositionPoint(row, column).x; var copyRectY : uint = getPositionPoint(row, column).y; var copyRectWidth : uint = getPositionPoint(row+1, column+1).x - copyRectX; var copyRectHeight : uint = getPositionPoint(row+1, column+1).y - copyRectY; var bitmap : Bitmap = new Bitmap(new BitmapData(copyRectWidth, copyRectHeight, false)); var rectangle : Rectangle = new Rectangle(copyRectX, copyRectY, copyRectWidth, copyRectHeight); bitmap.bitmapData.copyPixels(_sourceBitmap.bitmapData, rectangle, new Point(0, 0)); bitmap.x = copyRectX + column * PARTS_PADDING; bitmap.y = copyRectY + row * PARTS_PADDING; addChild(bitmap); } private function getPositionPoint(row : uint, column : uint) : Point { var pointX:uint = Math.round(column / PARTS_NUMBER_HORIZONTAL * _sourceBitmap.width); var pointY:uint = Math.round(row / PARTS_NUMBER_VERTICAL * _sourceBitmap.height); return new Point(pointX, pointY); } //_____________________________________________________________________________________________________________ // P U B L I C - F U N C T I O N S //============================================================================================================= //_____________________________________________________________________________________________________________ // T W E E N I N G S //============================================================================================================= //_____________________________________________________________________________________________________________ // E V E N T S //============================================================================================================= //_____________________________________________________________________________________________________________ // G E T T E R & S E T T E R //============================================================================================================= } }