27Feb

[AS 3] DropShadowFilter: Drop Shadow on an Object

No comments

A simple demonstration of applying a drop shadow effect on a dynamically drawn object. Move your mouse around the Flash stage below to move the drop shadow.

Here is the Document Class DropShadow.as:

package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.filters.BitmapFilter;
    import flash.filters.BitmapFilterQuality;
    import flash.filters.DropShadowFilter;

    public class DropShadow extends Sprite {
        private var sqDimensions:uint = 100;

        public function DropShadow() {
            drawSquare();

			stage.addEventListener(MouseEvent.MOUSE_MOVE, changeShadow);
        }

		private function changeShadow(e:Event):void
		{
			// find the angle
			var xDist = (mouseX - (stage.stageWidth / 2)) * -1;
			var yDist = (mouseY - (stage.stageHeight / 2)) * -1;
			var angleRadians = Math.atan2(yDist, xDist);
			var angleDegrees = Math.round(angleRadians/Math.PI*180);

			var filter:BitmapFilter = createDS(angleDegrees);

            var myFilters:Array = new Array();
            myFilters.push(filter);
            filters = myFilters;
		}

        private function createDS(a:Number):BitmapFilter {
            var color:Number = 0x000000;
            var angle:Number = a;
            var alpha:Number = 0.8;
            var blurX:Number = 8;
            var blurY:Number = 8;
            var distance:Number = 15;
            var strength:Number = 0.65;
            var inner:Boolean = false;
            var knockout:Boolean = false; /* makes the object's fill transparent and reveals the background color of the document */
            var quality:Number = BitmapFilterQuality.HIGH;
            return new DropShadowFilter(distance,angle,color,alpha,blurX,blurY,strength,quality,inner,knockout);
        }

        private function drawSquare():void {
            graphics.beginFill(Math.random() * 0xffffff);
            graphics.drawRect(stage.stageWidth/2 - sqDimensions/2, stage.stageHeight/2 - sqDimensions/2, sqDimensions, sqDimensions);
            graphics.endFill();
        }
    }
}

Share/Save/Bookmark

Wednesday, February 27th, 2008 at 10:16 am and is filed under Actionscript 3, Image Effects. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a reply