Forked from: soundkitchen's sample 5 diff:3 forked from: sample 5 albatrus_jp forked:0favorite:0lines:54license : MIT License modified : 2010-01-16 22:07:11 Embed Tweet // forked from soundkitchen's sample 5 package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.filters.DropShadowFilter; import caurina.transitions.Tweener; import caurina.transitions.properties.FilterShortcuts; [SWF(width=465, height=465, frameRate=30, backgroundColor=0xFFFFFF)] public class Sample extends Sprite { public static const STD_POINT:Number = 150; public static const STD_DISTANCE:Number = 32; public static const STD_BLUR:Number = 32; private var light:Sprite; private var ball:Sprite; public function Sample():void { // FilterShortcuts を有効化 FilterShortcuts.init(); // light を作成 light = new Sprite(); light.x = stage.stageWidth / 2; light.y = stage.stageHeight / 2; light.graphics.beginFill(0xFF0000); light.graphics.drawCircle(0, 0, 20); light.graphics.endFill(); addChild(light); // ball を作成 ball = new Sprite(); ball.x = light.x; ball.y = light.y; ball.filters = [new DropShadowFilter(0, 1, 0, .4, 0, 0)]; ball.graphics.beginFill(0); ball.graphics.drawCircle(0, 0, 20); ball.graphics.endFill(); addChild(ball); // stage のクリックイベントにリスナーを登録 stage.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(evt:MouseEvent):void { var dx:Number = mouseX - light.x; var dy:Number = mouseY - light.y; var dp:Number = Math.sqrt(dx*dx + dy*dy) / STD_POINT; var degrees:Number = Math.atan2(dy, dx) / Math.PI * 180; Tweener.addTween(ball, { x: mouseX, y: mouseY, _DropShadow_angle: degrees,//シャドウの長さ _DropShadow_distance: dp * STD_DISTANCE, _DropShadow_blurX: dp * STD_BLUR, _DropShadow_blurY: dp * STD_BLUR, time: 1, transition: "easeInOutCubic" }); } } } Code Fullscreen Preview Fullscreen FilterShortcuts.init mouseY mouseX DropShadowFilter filters Math.atan2 MouseEvent.CLICK Math.sqrt addChild Tweener.addTween time MouseEvent addEventListener Math.PI Sprite Number