In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: 流れ落ちる

Get Adobe Flash player
by kohie_yamashima 11 May 2009
    Embed
// forked from tktr90755's 流れ落ちる
package
{
	
	import flash.display.MovieClip;
	import flash.display.Shape;
	import flash.display.Stage;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
        [SWF(frameRate="60")] 
	public class Dots extends MovieClip
	{
		//コンテナ
		private var container:MovieClip;
		//噴出位置とリミット位置
		private var xLimit:Number;
		private var yLimit:Number;
		private var xAxis :Number;
		private var yAxis :Number;
		//色
		private var colors:Array = new Array("0xE89A0A", "0xE910DE", "0x0EEB10", "0xE9C010", "0xE2160F", "0xD6EB0B", "0xEB117C", "0xE81167", "0x7E11E8");
		//クリックで切り替え
		private var clickFlug:Boolean = false;
		
		public function Dots()
		{
		   addEventListener(Event.ADDED_TO_STAGE, onAddedStage);
		}
		
		private function onAddedStage(e:Event):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, onAddedStage);
			stage.addEventListener (MouseEvent.MOUSE_DOWN, _onMouseDown);
			stage.addEventListener (MouseEvent.MOUSE_MOVE, _onMouseMove);
			
			container = new MovieClip();
			addChild (container);
			
			xLimit = stage.stageWidth * 2;
			yLimit = stage.stageHeight * 2;
			xAxis  = stage.mouseX;
			yAxis  = stage.mouseY;
			
			var textField:TextField=new TextField();
			textField.text="クリックしてね";
			addChild(textField);
		}
		private function _onMouseDown (e:Event):void
		{
			addEventListener(Event.ENTER_FRAME, _onEnterFrame);
			stage.addEventListener(MouseEvent.MOUSE_UP, _onMouseUp);
			clickFlug = ! clickFlug
		}
		private function _onMouseUp (e:Event):void
		{
			removeEventListener(Event.ENTER_FRAME, _onEnterFrame);
			stage.removeEventListener(MouseEvent.MOUSE_UP, _onMouseUp);
		}
		private function _onMouseMove (e:Event):void
		{
			xAxis = stage.mouseX;
			yAxis = stage.mouseY;
		}
		private function _onEnterFrame(e:Event):void
		{
			createClip (container, xAxis, yAxis);
		}
		
		private function createClip (a:MovieClip, b:Number, c:Number):void
		{
			//ランダムな数値
			var value1:Number = Math.floor(Math.random() * 10);
			var value2:Number = Math.floor(Math.random() * 10);
			var value3:Number = Math.floor(Math.random() * 10);
			//速さ [X軸,Y軸,回転]
			var xSpeed:Number = value1 - value2;
			var ySpeed:Number = value3 - 10;
			var ratationSpeed:Number =10;
			if (clickFlug)
			{
				xSpeed = value1 - value2;
				ySpeed = value3 - 10;
				ratationSpeed =10;
			}
			else
			{
				xSpeed = 1;
				ySpeed = -10;
				ratationSpeed =10;
			}
			//減速率 [X軸,Y軸,回転]
			var xDeceleration:Number = 0.98;
			var yDeceleration:Number = 0.98;
			var rotationDeceleration:Number = 0.98;
			//重力
			var gravity:Number = 0.35;
			var ms:Number = 0.98;
			var sc:Number = 0.25;
			var sa:Number = 0.05 * Math.random ();
			//shape生成と
			var shape:Shape = new Shape();
			a.addChild(shape);
			shape.graphics.beginFill(0xf00000 * Math.random());
			shape.graphics.drawCircle(0, 0, 10);
			shape.graphics.endFill();
			shape.x = b;
			shape.y = c;
			shape.rotation = 30;
			shape.alpha=0;
			//流れ落ちる動き
			shape.addEventListener (Event.ENTER_FRAME,__onEnterFrame);
			function __onEnterFrame (e:Event):void
			{
				shape.alpha=1;
				xSpeed = xSpeed * xDeceleration;
				ySpeed = ySpeed * yDeceleration + gravity;
				ratationSpeed = ratationSpeed * rotationDeceleration;
				e.target.x = e.target.x + xSpeed;
				e.target.y = e.target.y + ySpeed;
				e.target.rotation = e.target.rotation + ratationSpeed;
				sc = sc + sa;
				e.target.scaleX = 1 * Math.sin (3.141593 * sc);
				e.target.scaleY = 1 * Math.cos (3.141593 * sc);
				if (e.target.x + 100 > xLimit || e.target.y + 100 > yLimit )
				{
					e.target.alpha = Math.round (yLimit - e.target.y);
					if (e.target.alpha<=0)
					{
						shape.removeEventListener (Event.ENTER_FRAME, __onEnterFrame);
						removeMC ();
					}
				}
			}
			function removeMC ():void
			{
				a.removeChild (shape);
			}
		}
		private function randomInt(max:int,min:int):int
		{
			var value:int = min + Math.floor(Math.random() * (max - min));
			return value;
		}
	}
}