smoke effect

by PixelDevil
...
@author PixelDevil
♥0 | Line 71 | Modified 2009-08-25 01:44:41 | MIT License
play

ActionScript3 source code

/**
 * Copyright PixelDevil ( http://wonderfl.net/user/PixelDevil )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/64lk
 */

package {
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.display.MovieClip 
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.filters.DropShadowFilter;
	import flash.utils.Timer;
	import flash.ui.Mouse;
	import flash.filters.BlurFilter;
	import flash.filters.ColorMatrixFilter;
	import flash.geom.Point;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	/**
	 * ...
	 * @author PixelDevil
	 */
[SWF(width="500", height="500", backgroundColor= 0x000000, frameRate="24")]
      
	public class  MouseEffect extends MovieClip  {
		var myTimer:Timer = new Timer(50, 0);

		var circle:MovieClip  = new MovieClip ();
		var rayon:Number = 7;
		//filters
        private var bmd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000);
        private var bm:Bitmap = new Bitmap (bmd);
        private var bf:BlurFilter = new BlurFilter (8, 8, 1);
		
        private var cmf:ColorMatrixFilter = new ColorMatrixFilter ([1, 0, 0, 0, 0,         // red
								    0, 1, 0, 0, 0,         // green
								    0, 0, 1, 0, 0,         // blue
								    0, 0, 0, 0.9, 0, ]);   // alpha
        
		 private var d:DropShadowFilter = new DropShadowFilter(0.0, 0, 0x994675, 0.5, 30.0, 30.0, 1.0, 1, false, false, false)
// CONSTRUCTEUR	
		public function MouseEffect ():void {
			init();
			Mouse.hide();
			addChild(bm);
		}
// call the function
		private function init():void{
			initObjet();
			initListener();
		}
// function to call my listener
		private function initListener():void {
			addEventListener(Event.ENTER_FRAME, move);
			addEventListener(MouseEvent.MOUSE_DOWN, functionClick);
			myTimer.addEventListener(TimerEvent.TIMER, circleGrow);
		}
// creat a round object
		private function initObjet():void {
			circle.graphics.beginFill(0x00000); // 0x00000
			circle.graphics.lineStyle(1,0xffffff); // 0xffffff
			circle.graphics.drawCircle(0, 0, 5);
			addChild(circle);
			circle.filters = [d];
		}
// on click my timer start
		private function functionClick(e:MouseEvent):void {
			myTimer.start();
			
		}
// function to scale my round object and decrease the transparency
		private function circleGrow(e:TimerEvent):void {
			circle.width +=rayon;
			circle.height +=rayon;
			circle.alpha -= 0.05;
// apply filters
			bmd.draw(this);
			bmd.applyFilter(bmd, bmd.rect, new Point (0, 0), bf);
			bmd.applyFilter(bmd, bmd.rect, new Point (0, 0), cmf);
// if my round goes under 0 to the alpha, resize it
			if (circle.alpha <= 0) {
				circle.width =10;
				circle.height =10;
				circle.alpha = 1;
			}
		}
// my object follow the mouse
		private function move(e:Event):void {
			circle.x = mouseX;
			circle.y = mouseY;
		}
	}
}