package { import flash.display.*; import flash.events.*; import flash.utils.*; import fl.controls.*; import fl.data.DataProvider; public class Main extends Sprite { public var carver:Carving; public var src:BitmapData; public var bmp:Bitmap; public var bmpd:BitmapData; public var _bmp:Bitmap; public var btn:Button; public var energy:Button; public var rendering:Boolean=false; public function Main():void { stage.align = 'TL'; stage.scaleMode = 'noScale'; //image var image:Class = getDefinitionByName('Image') as Class; src = new image( 0,0 ); bmp = new Bitmap( src ); addChild( bmp ); bmpd = src.clone(); _bmp = new Bitmap( bmpd ); _bmp.blendMode = 'alpha'; addChild( _bmp ); //boutons btn = new Button(); btn.label = 'render'; btn.x = src.width - btn.width; btn.y = src.height; addChild( btn ); btn.addEventListener(MouseEvent.CLICK, clickHandler ); // montrer cacher l'energy Map (! rafraichit en fonction du refreshRate ) energy = new Button(); energy.label = 'energgy'; energy.x = btn.x - energy.width; energy.y = btn.y; addChild( energy ); energy.addEventListener(MouseEvent.CLICK, energyHandler ); //frequence de rafraîchissement de l'energy map Carving.refreshRate = 10; // filtre utilise pour la detection de contours Carving.filterType = 'PREWITT';//'SOBEL';// //valeur du seuil Carving.threshold = 0xFF666666; // initialise le carving carver = new Carving( src ); carver.getImage(bmpd); addEventListener( Event.ENTER_FRAME, update ); } function clickHandler( e:Event ):void { rendering = !rendering ? true : false; } function energyHandler( e:Event ):void { switch( _bmp.blendMode ) { case 'alpha': _bmp.blendMode = 'normal'; break; case 'normal': _bmp.blendMode = 'alpha'; break; } bmpd.draw( carver.out ); } function update(e:Event ):void { var limit:int = src.width / 3+15; if( rendering ) { if( carver.width > limit ) { carver.resize( carver.width-1, carver.height); }else{ removeEventListener( Event.ENTER_FRAME, update ); } } } } }