forked from: マウスを追う (2)

by bradsedito forked from マウスを追う (2) (diff: 32)
マウスを追う (2)

マウスの動きとムービークリップ (2)
http://www.project-nya.jp/modules/weblog/details.php?blog_id=94
[AS3.0] マウスの動きを追尾する (2)
http://www.project-nya.jp/modules/weblog/details.php?blog_id=1269
♥0 | Line 101 | Modified 2010-11-10 04:12:28 | MIT License
play

ActionScript3 source code

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

// forked from ProjectNya's マウスを追う (2)
////////////////////////////////////////////////////////////////////////////////
// マウスを追う (2)
//
// マウスの動きとムービークリップ (2)
// http://www.project-nya.jp/modules/weblog/details.php?blog_id=94
// [AS3.0] マウスの動きを追尾する (2)
// http://www.project-nya.jp/modules/weblog/details.php?blog_id=1269
////////////////////////////////////////////////////////////////////////////////

package {

    import flash.display.Sprite;
    import flash.events.Event;
    import __AS3__.vec.Vector;
    import flash.geom.Point;
    import net.hires.debug.Stats;
    import flash.filters.GlowFilter;
    import flash.filters.BlurFilter;
    import gs.*;
    import gs.easing.*;
    [SWF(backgroundColor="#000000", width="465", height="465", frameRate="60")]

    public class Main extends Sprite {
        private var leader:Leader;
        private static var max:uint = 10;
        private var circles:Array;
        private var tracks:Vector.<Point>;
        private static var interval:uint = 20;
            private var blur:Number = (Math.cos(angle*radian)*0.45 + 0.55)*16;
            private var angle:Number = -90;
            private static var radian:Number = Math.PI/180;


        public function Main() {
            //Wonderfl.capture_delay(1);
            init();
            //addChild(new Stats());
        }

        private function init():void {
            leader = new Leader(0xFFFFFF);
            addChild(leader);
            var cx:uint = stage.stageWidth/2;
            var cy:uint = stage.stageHeight/2;
            leader.x = cx;
            leader.y = cy;
            var colors:Array = new Array();
            colors.push(0xffffff);
            colors.push(0xffffff);
            colors.push(0xffffff);
            circles = new Array();
            tracks = new Vector.<Point>();
            for (var n:uint = 0; n < max; n++) {
                var circle:Circle = new Circle(colors[n]);
                addChild(circle);
                circle.x = cx;
                circle.y = cy;
                circles.push(circle);
                
//            var overlay:circle;
  
              circle.filters = [new GlowFilter(0xffffff, .6, blur, blur, 2, 3, false, false)];


TweenMax.to(this, 1, {glowFilter:{color:0xffffff, alpha:0.9, blurX:50, blurY:50, strength:10, quality:3}, ease:Quad.easeInOut});            //  circle.filters = [new BlurFilter(blur*8, blur*8, 3)];
           
                
                for (var t:uint = 0; t < interval; t++) {
                    tracks.push(new Point(cx, cy));
                    
                 
                }
            }
            addEventListener(Event.ENTER_FRAME, update, false, 0, true);
        }
        private function update(evt:Event):void {
            leader.update();
            for (var n:uint = 0; n < max; n++) {
                var circle:Object = circles[n];
                circle.update(tracks[interval*(n + 1) - 1]);
            }
            tracks.unshift(new Point(leader.x, leader.y));
            tracks.pop();
        }
        
    }

}


//////////////////////////////////////////////////
// Leaderクラス
//////////////////////////////////////////////////

import flash.display.Sprite;

class Leader extends Sprite {
    private static var radius:uint = 6;
    private var color:uint = 0xFFFFFF;
    private var target:Object = {x: 0, y: 0};
    private static var deceleration:Number = 0.16;

    public function Leader(c:uint) {
        color = c;
        draw();
    }

    private function draw():void {
        graphics.beginFill(color);
        graphics.drawCircle(0, 0, radius);
        graphics.endFill();
    }
    public function update():void {
        x += (stage.mouseX - x)*deceleration;
        y += (stage.mouseY - y)*deceleration;
        z += (stage.mouseY - y)*deceleration;
    }

}


//////////////////////////////////////////////////
// Circleクラス
//////////////////////////////////////////////////

import flash.display.Sprite;
import flash.geom.Point;

class Circle extends Sprite {
    private static var radius:uint = 6;
    private var color:uint = 0xFFFFFF;

    public function Circle(c:uint) {
        color = c;
        draw();
    }

    private function draw():void {
        graphics.beginFill(color);
        graphics.drawCircle(0, 0, radius);
        graphics.endFill();
    }
    public function update(track:Point):void {
        x = track.x;
        y = track.y;
    }

}