角度を求めるサンプル

2008年10月21日 10:08 action script,数学・物理 — littlepad

点から距離を求められるようになったので、矢印がカーソル位置を追跡するサンプルを作ってみた。
矢印の速度はランダムにTweenerに設定。
19行目のリスナー関数における引数はワイルドカードで通常呼び出しも可能とした。
その際は引数にnullを渡す(37行目)。

This movie requires Flash Player 9

package 
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import caurina.transitions.Tweener;

	public class Arrow extends Sprite {
		private var moveX:Number;
		private var moveY:Number;
		private var onMove:Boolean;
		
		//コンストラクタ
		public function Arrow():void {
			x = stage.stageWidth/2;
			y = stage.stageHeight/2;
			stage.addEventListener(MouseEvent.MOUSE_MOVE, arrowTurn, false, 0, true);
		}
		
		function arrowTurn(e:*):void {
			moveX = stage.mouseX;
			moveY = stage.mouseY;
			var radians:Number = rad2deg( Math.atan2(moveY - y, moveX - x) );
			radians %= 360;
			if (!onMove) {
				Tweener.addTween(this, { rotation:radians, time:1, transition:"easeOut", onComplete:arrowMove } );
			}
		}

		function arrowMove():void {
			onMove = true;
			var randomTime:Number = Math.random()*2+0.2;
			Tweener.addTween(this, { x:moveX, y:moveY, time:randomTime, transition:"easeOut", onComplete:compMove});
		}
		
		private function compMove():void {
			onMove = false;
			arrowTurn(null);
		}

		//ラジアン→度
		function rad2deg(rad:Number):Number{
			return rad * ( 180 / Math.PI );
		}
	}
}

コメントはまだありません

No comments yet.

TrackBack URL

Leave a comment

about

ハンドルネーム:littlepad
都内で WEB 制作(デザイン, html/css, Flash, MT, WordPress etc)をしているBOØWY研究家

category:

search:


archives:

GO TO PAGETOP