forked from: 引力・斥力2

by gs1mm0ns forked from 引力・斥力2 (diff: 9)
♥0 | Line 63 | Modified 2010-06-21 13:34:43 | MIT License
play

ActionScript3 source code

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

// forked from cpu_t's 引力・斥力2
package
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.Event;
    public class FlashTest extends Sprite
    {
        public function FlashTest()
        {
        		graphics.beginFill(0xCC22);
        		graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
        		stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
         	nodelist=new Array();
         	addEventListener(Event.ENTER_FRAME,enterFrameHandler);
        }
        private var nodelist:Array;
        private function mouseDownHandler(e:MouseEvent):void
        {
        		var node:Node=new Node();
        		addChild(node);
        		node.x=mouseX;
        		node.y=mouseY;
        		nodelist.push(node);
        		nodedis+=2;
        }
        private var nodedis:Number=30;
        private function enterFrameHandler(e:Event):void
        {
        		var node:Node;
        		for each(node in nodelist)
        		{
        			node.vx*=0.7;node.vy*=0.7;
        			node.vx+=(stage.stageWidth/2-node.x)*0.01;
        			node.vy+=(stage.stageHeight/2-node.y)*0.01;
        			for each(var node2:Node in nodelist)
        			{
        				if(node==node2)continue;
        				var dis:Number=Math.sqrt((node2.x-node.x)*(node2.x-node.x)+(node2.y-node.y)*(node2.y-node.y));
        				node.vx+=(node2.x-node.x)/dis*(dis-nodedis)*0.01;
        				node.vy+=(node2.y-node.y)/dis*(dis-nodedis)*0.01;
        			}
        		}
        		for each(node in nodelist)
        		{
        			node.x+=node.vx;
        			node.y+=node.vy;
        		}
        }
    }
}

import flash.display.Sprite;
import flash.filters.BlurFilter;

class Node extends Sprite
{
	public function Node()
	{
        graphics.beginFill(0xFFFFFF);
        graphics.drawCircle(0,0, Math.random()+Math.random()*14);
	}
	private static var bFilter:BlurFilter=new BlurFilter();
	public var vx:Number=0;
	public var vy:Number=0;
}