package { import caurina.transitions.*; import caurina.transitions.properties.FilterShortcuts; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.Loader; import flash.events.Event; import flash.geom.Rectangle; import flash.geom.Point; import flash.net.URLRequest; public class Bitmap2Grid extends MovieClip { private var loader:Loader; private var bmd:BitmapData; private var margin:int; private var squareLine:int; private var rows:int; private var columns:int; private var r:int = 0; private var c:int = 0; private var allSquares:Array; private var cutWidth:Number; private var cutHeight:Number; public function Bitmap2Grid() { FilterShortcuts.init(); allSquares = new Array(); loader = new Loader(); } public function init(src:String = "bmd2squares.jpg",margin:int = 0,squareLine:int = 5) { this.margin = margin; this.squareLine = squareLine; this.columns = squareLine; this.rows = squareLine; cutWidth = (stage.stageWidth-margin*(columns+1))/columns; cutHeight = (stage.stageHeight-margin*(rows+1))/rows; loader.load( new URLRequest(src)); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, drawImage); } private function drawImage(e:Event):void { loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, drawImage); var image:DisplayObject = loader.content; bmd = new BitmapData(image.width, image.height); bmd.draw(image); breakUp(); } private function breakUp() { for(c = 0;c < columns; c++) { for(r = 0; r < rows; r++) { createCut(r,c); } } } private function createCut(row,column) { var posX:Number = (cutWidth+margin)*row+margin; var posY:Number = (cutHeight+margin)*column+margin; var bmdCopy:BitmapData = new BitmapData(cutWidth,cutHeight,false,0xFF000000); var bm:Bitmap = new Bitmap(bmdCopy); bmdCopy.copyPixels(bmd, new Rectangle(posX,posY,cutWidth,cutHeight), new Point(0,0)); bm.x = posX; bm.y = posY; addChild(bm); } } }