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();
}
}
}
Many thanks for this. I’ve been looking for some help on this.