forked from: forked from: forked from: flash on 2011-1-22

by hig_an
クリックでリセット
♥0 | Line 73 | Modified 2011-01-24 19:44:51 | MIT License
play

ActionScript3 source code

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

// forked from hig_an's forked from: forked from: flash on 2011-1-22
// forked from hig_an's forked from: flash on 2011-1-22
// forked from hig_an's flash on 2011-1-22
package {
	import flash.display.Sprite;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.events.Event;
	import flash.geom.Matrix;
	import flash.events.MouseEvent;
	import flash.ui.Mouse;
    [SWF(backgroundColor='#000000', frameRate='30', width='465', height='465')]

	
	public class Main extends Sprite {
		private var numOfList:Number = 100;
		private var circleSize:Number = 10;
		
		private var sp:Sprite;
		private var mt:Matrix;
		private var bmpd:BitmapData;
		private var circleList:Array;
		private var spList:Array;
		
		public function Main() {
			spList = new Array();
			
			circleList = new Array();
			
			bmpd = new BitmapData(stage.stageWidth, stage.stageHeight, false,0xFFFFFF);
			mt = new Matrix();
			
			addChild(new Bitmap(bmpd));
			addEventListener(Event.ENTER_FRAME, loop);
			stage.addEventListener(MouseEvent.CLICK, reset);
			for (var i:int = 0; i < numOfList; i++) {
				circleList[i] = new Circle(i * 100 + circleSize, 100);
				spList[i] = newFig(0, 0, circleSize - circleSize * i / numOfList, 0xFFFFFF * Math.random());
			}
		}
		private function loop(e:Event):void {
			bmpd.lock();
			circleList[0].x = Math.abs(mouseX - stage.stageWidth);
			circleList[0].y = Math.abs(mouseY - stage.stageHeight);
			mt.identity()
			mt.translate(circleList[0].x, circleList[0].y);
			bmpd.draw(spList[0], mt);
			for (var i:int = 1; i < circleList.length; i++) {
				circleList[i].x += (circleList[i - 1].x -circleList[i].x) * 0.5;
				circleList[i].y += (circleList[i - 1].y -circleList[i].y) * 0.5;
				mt.identity()
				mt.translate(circleList[i].x, circleList[i].y);
				bmpd.draw(spList[i], mt);
			}
			bmpd.unlock();
		}
		private function newFig(x:Number,y:Number,size:Number,col:uint = 0xFF0000) :Sprite{
			var s:Sprite = new Sprite()
			s.graphics.beginFill(col);
			s.graphics.drawCircle(x, y, size);
			s.graphics.endFill();
			
			return s;
		}
		private function reset(e:MouseEvent):void {
			for (var i:int = 0; i < numOfList; i++) {
				spList[i] = newFig(0, 0, circleSize - circleSize * i / numOfList, 0xFFFFFF * Math.random());
				circleList[i].x = circleList[0].x;
				circleList[i].y = circleList[0].y;
			}
			bmpd.fillRect(bmpd.rect, 0xFFFFFF);
		}
	}
}

class Circle{
		public var x:Number;
		public var y:Number;
		public var vx:Number = 0.2;
		public var vy:Number = 0.2;
		public function Circle(xx:Number, yy:Number ) {
			x = xx;
			y = yy;
		}
	}

Forked