マウスカーソル追尾処理 + ブラーエフェクト

by Makoto_Tanaka forked from マウスカーソル追尾処理 (diff: 29)
マウスカーソルの追尾処理に加えてブラーエフェクトをかけたエフェクトを表示
♥0 | Line 42 | Modified 2010-09-09 17:56:35 | MIT License
play

ActionScript3 source code

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

// forked from Makoto_Tanaka's マウスカーソル追尾処理
/*
 * マウスカーソルの追尾処理
 * ブラーをかけたエフェクトを追加
 */
package {
    import flash.filters.BlurFilter;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.display.Sprite;
    
    import caurina.transitions.Tweener;
    
    [SWF(backgroundColor="#000000")]
    public class FlashTest extends Sprite {
        
        private var _dot:Bitmap;
        
        // コンストラクタ
        public function FlashTest() {
            init();
            
            this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
        
        // 初期処理
        private function init():void {
            _dot = createDot(0xffffff);
            addChild(_dot);
        }
        
        // エンターフレームイベント
        // ドットがマウスカーソルの位置を追う
        private function onEnterFrame(e:Event):void {
            _dot.x += (stage.mouseX - _dot.x) * 0.2;
            _dot.y += (stage.mouseY - _dot.y) * 0.2;
            
            var red:Number = (Math.random() * 0x88 + 0x88) << 16;
            var green:Number = (Math.random() * 0x88 + 0x88) << 8;
            var blue:Number = (Math.random() * 0x88 + 0x88);
            var color:Number = red + green + blue;
            
            for (var i:int=0; i<3; i++) {
                var effect:Bitmap = createDot(color);
                effect.x = _dot.x;
                effect.y = _dot.y;
                effect.filters = [new BlurFilter()];
                Tweener.addTween(effect, {alpha:0, x:effect.x + (Math.random()*30) - 15, y:effect.y + (Math.random()*60) - 30, time:3, onComplete:function():void { this.removeChild(effect); }});
                addChild(effect);
            }
            
        }
        
        // ドットの作成
        private function createDot(color_:Number):Bitmap {
            var bmpData:BitmapData = new BitmapData(5,5,false,color_);
            var bmp:Bitmap = new Bitmap(bmpData);
            return bmp;
        }
    }
}