Skip to content


[AS 3] DropShadowFilter: Drop Shadow on an Object

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();
        }
    }
}

Posted in Actionscript 3, Image Effects.


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Tim says

    Many thanks for this. I’ve been looking for some help on this.



Some HTML is OK

or, reply to this post via trackback.