forked from: マウスに一定距離まで引き寄せられる点

by smallflowergame forked from マウスに一定距離まで引き寄せられる点 (diff: 66)
♥0 | Line 60 | Modified 2010-08-11 23:09:08 | MIT License
play

ActionScript3 source code

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

// forked from okoi's マウスに一定距離まで引き寄せられる点
package {
        import flash.display.MovieClip;
    import flash.events.Event;

    public class FlashTest extends MovieClip {
            private    static const NUM_X:int = 10;
        private static const NUM_Y:int = 10;
        private    var    pointList:Array = new Array();

        
        public function FlashTest() {
            // write as3 code here..
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        public    function init(event:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            
            for ( var i:int = 0; i < NUM_X * NUM_Y; i++ )
            {
                var p:PathPoint = new PathPoint();
                p.Init( int(i % NUM_X) * 40, int(i / NUM_X) * 40 );
                addChild( p );
            }
            
            graphics.beginFill(0x000000);
            graphics.drawRect(0,0,stage.stageWidth, stage.stageHeight);
            
        }        
    }
}
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
import flash.display.MovieClip;
import flash.events.Event;

class PathPoint extends MovieClip {
    //    基本座標
    public    var    defX:Number;
    public    var defY:Number;
    //    影響値
    public    var    effect:Number;
    
    public    function PathPoint():void 
    {
        super();
        
        graphics.beginFill(0xFFFFFF);
        graphics.drawCircle(0, 0, 5);
    }
    
    public    function Init(_x:Number, _y:Number):void 
    {
        this.x = _x;
        this.y = _y;
        defX = _x;
        defY = _y;
        
        addEventListener( Event.ENTER_FRAME, EnterFrame );
    }
    
    public    function EnterFrame(event:Event):void 
    {
        if ( !stage ) return;
        
        var mX:int = stage.mouseX;
        var mY:int = stage.mouseY;
        
        var len:Number = Math.sqrt( (mX - defX) * (mX - defX) + (mY - defY) * (mY - defY) );
        
        var powerRate:Number = (len / 40);
        if ( powerRate > 1 ) powerRate = 1;
        var r:Number = Math.atan2( (mY - defY), (mX - defX) );
        
        var targetX:Number = defX + Math.cos( r ) * 10 * powerRate;
        var targetY:Number = defY + Math.sin( r ) * 10 * powerRate;
        
        this.x += (targetX - this.x) / 10;
        this.y += (targetY - this.y) / 10;
    }
}