// forked from bioRex21's Construct Image from tiles package { import caurina.transitions.Tweener; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.FileFilter; import flash.net.FileReference; import flash.net.URLRequest; public class ConstructImage extends Sprite { private var loader:Loader; private var imageUrl:URLRequest; private var sourceBmd:BitmapData; private var sectionBmd:BitmapData; private var sectionWidth:Number; private var sectionHeigth:Number; private var horFrames:Number; private var verFrames:Number; private var btn:Button; private var fileRef:FileReference; public function ConstructImage() { // horFrames*verFrames = total paticles horFrames = 30; verFrames = 30; btn = new Button("click here to load an image"); addChild(btn); btn.x = 320; btn.addEventListener(MouseEvent.CLICK, browseFiles); } public function browseFiles(e:MouseEvent):void { fileRef = new FileReference(); fileRef.addEventListener(Event.SELECT, selectHandler); var arr:Array = []; arr.push(new FileFilter("Images", ".gif;*.jpeg;*.jpg;*.png")); fileRef.browse(arr); } public function selectHandler(e:Event):void { fileRef.load(); fileRef.addEventListener ( Event.COMPLETE, onDataLoaded ) ; } public function onDataLoaded(e:Event):void { var tempFileRef:FileReference = FileReference (e.target) ; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded); loader.loadBytes(tempFileRef.data); } private function onImageLoaded (e:Event):void { sourceBmd = (e.target.content).bitmapData; imageReady(); } public function imageReady():void { var w:Number = loader.content.width; var h:Number = loader.content.height; sectionWidth = Math.round(w/horFrames); sectionHeigth = Math.round(h/verFrames); sourceBmd = new BitmapData(w,h); sourceBmd.draw(loader.content); var i:Number = 1; var rect:Rectangle = new Rectangle(); var yMultiplier:Number = 0; var xMultiplier:Number = 0; for(i; i<=(horFrames * verFrames); i++) { sectionBmd = new BitmapData(sectionWidth, sectionHeigth); rect.x = xMultiplier* sectionWidth; rect.y = yMultiplier* sectionHeigth; rect.width = sectionWidth; rect.height = sectionHeigth; sectionBmd.copyPixels(sourceBmd, rect, new Point()); xMultiplier++; if(i % horFrames == 0 ) { yMultiplier++; xMultiplier = 0; } tweenMe(sectionBmd, rect.x, rect.y ); } //put the btn over the image setChildIndex(btn, (numChildren - 1)); } public function tweenMe(sectionData:BitmapData, destX:Number, destY:Number):void { var b:Bitmap = new Bitmap(sectionData); b.x = Math.floor(Math.random() * (1+550-10)) + 10; b.y = Math.floor(Math.random() * (1+200-400)) + 200; addChild(b); Tweener.addTween(b, {x:destX, y:destY, time:2} ); } }//ConstructImage Class }//package import flash.display.Sprite; import flash.text.TextField; class Button extends Sprite { private var texto:TextField; public function Button(label:String="label") { graphics.beginFill(0xff00ff); graphics.drawRect(0,0, 200, 20); graphics.endFill(); texto = new TextField(); texto.textColor = 0x000000; texto.width = 200; texto.text = label; texto.selectable = false; addChild(texto); } } forked from: Construct Image from tiles