2008年11月29日

追いかけるActionScript

最近ActionScriptの勉強をやってます。

クリックすると追いかけてくるAS。今できるのはせいぜいこのくらい。

FlashPlayer9以上が必要です。

ソースコードは続きからどうぞ。

メインのクラス。 途中コメントアウトしてる部分のコメントを外すとマウスの動きに追従するようになる。

package {
	import net.hextomino.Follow;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	
	public class Main extends Sprite {
		public function Main():void {
			var follow:Follow = new Follow();
			addChild(follow.getShape());
			
			stage.addEventListener(MouseEvent.CLICK, follow.begin);
			//stage.addEventListener(MouseEvent.MOUSE_MOVE, follow.begin);
		}
	}
}

ついてくるもの(ball)の動きを定義。

package net.hextomino {
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	public class Follow extends Sprite {
		private var ball:Shape;
		private const RADIUS:int = 15; // ボールの半径
		private const EASING:Number = 0.1; // 減速率
		
		// ボールの目的地
		private var toX:Number;
		private var toY:Number;
		
		public function Follow() {
			// ボールの作成
			ball = new Shape();
			ball.graphics.beginFill(0xAAAAAA);
			ball.graphics.lineStyle(1, 0xFFFFFF);
			ball.graphics.drawCircle(0, 0, RADIUS);
			ball.graphics.endFill();
		}
		
		/**
		 * Begin ball moving.
		 * @param	evt
		 */
		public function begin(evt:MouseEvent) {
			// 行き先をクリック位置に更新
			toX = evt.stageX;
			toY = evt.stageY;
			
			addEventListener(Event.ENTER_FRAME, move);
		}
		
		/**
		 * Move ball to distination with easing.
		 * @param	evt
		 */
		private function move(evt:Event):void {
			// 行き先までの距離を計算
			var distX = toX - ball.x;
			var distY = toY - ball.y;
			
			if(Math.abs(distX) < 0.5 && Math.abs(distY) < 0.5) {
				// ある程度まで近づいたら目的地までボールを移動して
				// 移動を行うイベントを削除
				ball.x = toX;
				ball.y = toY;
				
				removeEventListener(Event.ENTER_FRAME, move);
			}
			else {
				// まだ目的地から離れているならボールを移動
				ball.x += (toX - ball.x) * EASING;
				ball.y += (toY - ball.y) * EASING;
			}
		}
		
		/**
		 * Get Shape object.
		 * @return
		 */
		public function getShape():Shape {
			return ball;
		}
	}
}

とりあえず授業の実験で作ったペイントソフトくらいのものは 作れるようになろうかと。

参考:FLASH OOP for ActionScript 3.0 / 翔泳社




同じカテゴリー(プログラミング)の記事画像
GoogleReaderを3ペイン表示にするスクリプトのα版
文字サイズを拡大縮小するスクリプト
電卓を表示するブックマークレット
Twitterで費やした時間を表示するスクリプト
ニコニコのタグをプレビューするスクリプト
ニコニコで広告を消すスクリプト
同じカテゴリー(プログラミング)の記事
 GoogleReaderを3ペイン表示にするスクリプトのα版 (2009-07-26 22:00)
 クリック動作を無効にするジョークブックマークレット (2009-07-19 23:52)
 文字サイズを拡大縮小するスクリプト (2009-07-12 18:09)
 ダブルクリックでスクロールするスクリプト (2009-07-05 14:22)
 電卓を表示するブックマークレット (2009-06-27 21:40)
 ごくごく一部の顔文字を絵文字に置き換えるスクリプト (2009-05-21 23:06)
Posted by Handle at 00:03│Comments(0)プログラミング
コメントフォーム
上の画像に書かれている文字を入力して下さい
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。