【AS3】三角関数を使った円運動

| | トラックバック(0)
今更感がすごいありますが、あいまいだったので記事にします。

AS3で三角関数を使うとモーションの表現力が大きく広がります。
実際はフラッシュ側でMath.sin(),Math.cos(),Math.PI()といったメソッドが用意されていますので、
それらを使いコードを記述することで簡単に実装可能です。

とりあえず以下のようなサンプルを作ってみました。

以下の部分でラジアンを算出しています。

e.currentTarget.x = stage.stageWidth / 2 + hankei * Math.cos(angle * Math.PI * 2);
e.currentTarget.y = stage.stageHeight / 2 + hankei * Math.sin(angle * Math.PI * 2);

ちょっとごちゃごちゃしてますのでわかりやすくすると
x = 円の中心の座標 + 円の半径 (radius) × cos(角度)
y = 円の中心の座標 + 円の半径
(radius) × sin(角度)
こんな感じでラジアンを算出しています。

度数を使いたい場合は以下のようにします。

var dx = Math.cos(angle * Math.PI * 2) * Math.PI / 180;
var dy = Math.sin(angle * Math.PI * 2) * Math.PI / 180;
line_mc.rotation = Math.atan2(dy, dx) * 180 / Math.PI;

ソース全文

package{
	import flash.display.MovieClip;
	import flash.events.Event;
	
	public class Main2 extends MovieClip{
		
		private var angle:Number = 0;
		private var hankei:Number = 100;
		public function Main2() {
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event):void {
			
			var mc:Ball= new Ball();
			addChild(mc);
			mc.x = stage.stageWidth / 2;
			mc.y = stage.stageHeight / 2;
			mc.addEventListener(Event.ENTER_FRAME, loop);
			
		}
		
		private function loop(e:Event):void {
			angle += 0.006;
			e.currentTarget.x = stage.stageWidth/2 + hankei * Math.cos(angle * Math.PI * 2);
			e.currentTarget.y = stage.stageHeight / 2 + hankei * Math.sin(angle * Math.PI * 2);
			var dx = Math.cos(angle * Math.PI * 2) * Math.PI / 180;
			var dy = Math.sin(angle * Math.PI * 2) * Math.PI / 180;
			line_mc.rotation = Math.atan2(dy, dx) * 180 / Math.PI;
		}

	}

}

トラックバック(0)

このブログ記事を参照しているブログ一覧: 【AS3】三角関数を使った円運動

このブログ記事に対するトラックバックURL: http://alwaysfinetuning.com/mt/mt-tb.cgi/103

このブログ記事について

このページは、が2009年11月30日 10:52に書いたブログ記事です。

ひとつ前のブログ記事は「[怪] お化け大学校」です。

次のブログ記事は「【AS3】数字3桁ごとにコンマを打つ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。