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: 流れ落ちる(flash as初心者なので、少々困惑中)

各種基底クラスを読み込んでおきます

import flash.display.MovieClip;
import flash.display.Shape;//図を描くのに使うよflashの描画ツール系
import flash.display.Stage;//flashコンテンツが表示される領域全体を現す
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;//textFieldを制御する

フレームレートは60fps
ムービークリップを継承した、パブリッククラスnagareotiruです
flaファイルから見えるようにするよ。(public class:package外から見えるようにする(flaファイル含む))
Get Adobe Flash player
by ayumimatsuda 13 Nov 2009
// forked from tktr90755's 流れ落ちる
package
{
	//各種基底クラスを読み込んでおきます
	/*
	import flash.display.MovieClip;
	import flash.display.Shape;//図を描くのに使うよflashの描画ツール系
	import flash.display.Stage;//flashコンテンツが表示される領域全体を現す
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;//textFieldを制御する
	*/
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import flash.filters.BlurFilter;
	     [SWF(frameRate="60",backgroundColor="#000000")] //フレームレートは60fps
		
	//ムービークリップを継承した、パブリッククラスnagareotiruです
	//flaファイルから見えるようにするよ。(public class:package外から見えるようにする(flaファイル含む))
	public class nagareotiru extends MovieClip//ムービークリップの機能を引き継いだ上で、拡張しますよ~
	{
		//コンテナ:型はMovieClip※
		private var container:MovieClip;
		
		//▼プロパティの定義(クラス内の変数を定義)※プロパティをほかのクラスから呼び出せるようにするにはpublicを定義の先頭につける
		//噴出位置とリミット位置
		private var xLimit:Number;
		private var yLimit:Number;
		private var xAxis :Number;
		private var yAxis :Number;
		//色:9色をArrayに格納※今回使わない
		//private var colors:Array = new Array("0xE89A0A", "0xE910DE", "0x0EEB10", "0xE9C010", "0xE2160F", "0xD6EB0B", "0xEB117C", "0xE81167", "0x7E11E8");
		//クリックで切り替え:Boolean型→true or false型
		private var clickFlag:Boolean = false;//clickFlagはfalse
		
		
		
		//▼コンストラクタnagareotiru定義※必ず、publicとして定義する コンストラクタは戻り値を返さない
		public function nagareotiru()
		{
			//
		   addEventListener(Event.ADDED_TO_STAGE, onAddedStage);//ADDED_TO_STAGE:ステージに追加イベント
		}
		
		//▼メソッドの定義※メソッドをほかのクラスから呼び出せるようにするにはpublicを定義の先頭につける
		//onAddedStage:ステージ上に表示する関係
		private function onAddedStage(e:Event):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, onAddedStage);//ADDED_TO_STAGE:ステージに追加イベントを削除。ずっとEnterFrameし続けないように
			stage.addEventListener (MouseEvent.MOUSE_DOWN, _onMouseDown);//マウスが押されている間、ステージ上にイベント
			stage.addEventListener (MouseEvent.MOUSE_MOVE, _onMouseMove);//マウスが動いている間、ステージ上にイベント
			
			container = new MovieClip();//ムービークリップ型の”container”というオブジェクトを作成(し、呼び出し)
			addChild (container);//ステージ上にcontainerを表示
			
			xLimit = stage.stageWidth * 2;//ステージの2倍の大きさまで
			yLimit = stage.stageHeight * 2;//ステージの2倍の大きさまで
			xAxis  = stage.mouseX;//初期位置はステージ上のマウスの位置に
			yAxis  = stage.mouseY;//初期位置はステージ上のマウスの位置に
			
			var textField:TextField=new TextField();//textFieldというTextField型のインスタンスを作成し、呼び出し
			textField.text="クリックするといい事ある。マウス押したままうごかす。クリックするごとに動き方が変わる。";//textFieldに表示
			textField.width=550;
			textField.textColor=0xffffff;
			addChild(textField);//ステージ上にtextFieldを表示
		}
		
		//_onMouseDown:マウス押される関係
		private function _onMouseDown (e:Event):void
		{
			addEventListener(Event.ENTER_FRAME, _onEnterFrame);//エンターフレームイベント(ずっとイベント)
			stage.addEventListener(MouseEvent.MOUSE_UP, _onMouseUp);//ステージ上で、MOUSE_UPイベント:マウス放すとなんかある(押してた状態から離した状態になったら)
			clickFlag = ! clickFlag//初期値はfalseが入ってるね。これでfalseとtrueきりかえ。つまりマウス押されたらtrueになって放すと初期値falseに戻るんだね。
		}
		
		//_onMouseUp:マウス放す関係
		private function _onMouseUp (e:Event):void
		{
			removeEventListener(Event.ENTER_FRAME, _onEnterFrame);//マウス押されてたときのエンターフレームイベント(ずっとイベント)をremove
			stage.removeEventListener(MouseEvent.MOUSE_UP, _onMouseUp);//ステージ上で、MOUSE_UPイベント:マウス放すとなんかある(押してた状態から離した状態になったら)をremove
		}
		
		//_onMouseMove:マウス動かす関係
		private function _onMouseMove (e:Event):void
		{
			xAxis = stage.mouseX;//位置はマウスの位置に追従
			yAxis = stage.mouseY;//位置はマウスの位置に追従
		}
		
		//_onEnterFrame:エンターフレーム関係
		private function _onEnterFrame(e:Event):void
		{
			createClip (container, xAxis, yAxis);//createClipという実行関数を作成(実行)してわたす引数は(container, xAxis, yAxis)
		}
		
		//createClipという関数の定義(引数は3つ↑あれに代入)
		private function createClip (a:MovieClip, b:Number, c:Number):void
		{
			//ランダムな数値
			//ランダムにすることで飛び散る
			var value1:Number = Math.floor(Math.random() * 10);//0~9まで
			var value2:Number = Math.floor(Math.random() * 10);//0~9まで
			var value3:Number = Math.floor(Math.random() * 10);//0~9まで
			
			/*ランダムにしないと飛び散らない
			var value1:Number = 9;
			var value2:Number = 9;
			var value3:Number = 9;
			*/
			
			//速さ [X軸,Y軸,回転]
			var xSpeed:Number = value1 - value2;//ランダムな値が入ってくるから、飛び散った感が出る
			var ySpeed:Number = value3 -10;//必ず負の値になる
			var ratationSpeed:Number =10;//回転スピードは10で固定
			
			//マウスをクリックするたびに、飛び散りと流れ落ちが切り替わる
			if (clickFlag)
			{
				xSpeed = value1 - value2;
				ySpeed = value3 - 10;
				ratationSpeed =10;
			}
			else
			{
				xSpeed = 1;
				ySpeed = -10;
				ratationSpeed =10;
			}
			
			//減速率 [X軸,Y軸,回転]
			var xDeceleration:Number =0.98;//1以下にして原則するようにする。1以上にすると加速してどっかいく
			var yDeceleration:Number = 0.98;//1以下にして原則するようにする。1以上にすると加速してどっかいく。ここをちょっと小さくすると、水の中っぽくなるね
			var rotationDeceleration:Number = 0.98;//回転
			
			//重力
			var gravity:Number = 0.35;//ほんとの重力加速度は9.80665だけど、ここまで大きくしちゃうと、すぐおっこってちゃうから、小さめに。この部分を小さくすると水の中っぽくなるんで、上に飛び上がる分も大きくなる
			var ms:Number = 0.98;
			var sc:Number = 0.25;//
			var sa:Number = 0.05 * Math.random ();//
			
			//shape生成と
			var shape:Shape = new Shape();//shapeという名前でデータ型はShapeでオブジェクト作成
			a.addChild(shape);//変数aにshapeを追加→てかこの変数って、どこで使うの??????
			//shape.graphics.beginFill(0xf00000 * Math.random());//色をランダムに※これだと、真っ赤とか、でない
			shape.graphics.beginFill(0xffffff * Math.random());//これだと真っ黒から真っ白まででる。真っ赤もでる
			shape.graphics.drawCircle(0, 0, 10);//半径10の円
			shape.graphics.endFill();
			shape.x = b;//shape.xにbを代入(bはcreateClipの引数) xAxis = stage.mouseX
			shape.y = c;//shape.yにcを代入(cはcreateClipの引数) yAxis = stage.mouseY
			shape.rotation = 30;//30度回転
			shape.alpha=0;//透明:で出しが見えないように
			shape.filters=[ new BlurFilter(10,10) ]//フィルターをかけてぼかす
			shape.blendMode = "add";
			
			
			
			//流れ落ちる動き
			shape.addEventListener (Event.ENTER_FRAME,__onEnterFrame);//shapeオブジェクトにエンターフレームイベント
			//shapeオブジェクトのエンターフレームイベントの関数定義
			function __onEnterFrame (e:Event):void
			{
				shape.alpha=1;//シェイプは不透明に
				xSpeed = xSpeed * xDeceleration;//スピードは、どんどん減速して、あまりx軸に対して広範囲には散らなくなる
				ySpeed = ySpeed * yDeceleration + gravity;//スピードは、どんどん減速し。常に重力関数の影響を加算し続ける(var gravity:Number = 0.35)
				ratationSpeed = ratationSpeed * rotationDeceleration;//
				e.target.x = e.target.x + xSpeed;//イベントのx軸プロパティをターゲットに→直後の位置を代入し続ける
				e.target.y = e.target.y + ySpeed;//イベントのy軸プロパティをターゲットに→直後の位置を代入し続ける
				e.target.rotation = e.target.rotation + ratationSpeed;//
				
				/*
				var sc:Number = 0.25;//
				var sa:Number = 0.05 * Math.random ();//
				*/
				sc = sc + sa;
				
				//縮尺率
				e.target.scaleX =4 * Math.sin (Math.PI * sc);
				e.target.scaleY =0.5 * Math.cos (Math.PI * sc);
				//もしイベントのx座標+100がxLimit(xLimit = stage.stageWidth * 2;//ステージの2倍の大きさまで)より大きいもしくは(yも同様に)の場合
				if (e.target.x + 100 > xLimit || e.target.y + 100 > yLimit )
				{
					//イベントのアルファは
					e.target.alpha = Math.round (yLimit - e.target.y);//Math.round小数点以下を四捨五入する
					//もしイベントのアルファが0以下になったら
					if (e.target.alpha<=0)
					{
						//エンターフレームイベントをremoveする
						shape.removeEventListener (Event.ENTER_FRAME, __onEnterFrame);
						//実行関数removeMC ()
						removeMC ();
					}
				}
			}
			
			//関数removeMC ()の定義
			
			function removeMC ():void
			{
				a.removeChild (shape);//aに追加したshapeをremoveする
			}
		}
		//関数randomInt()の定義 引数(max:int,min:int)
		/*
		private function randomInt(max:int,min:int):int
		{
			//
			var value:int = min + Math.floor(Math.random() * (max - min));
			return value;
		}
		*/
		
	}
}