ActionScript3でプロっぽい書き方

2009.9.7 月曜日

ネット上で公開されているオープンソースとかのクラスライブラリって、中身を覗くとクラスや変数、定数がキレイに整理されていてプロだな、って感じると思います。というわけで、個人的にプロっぽいって感じる書き方を紹介。ポイントは .parent や .root を使って自分より上位のオブジェクトの関数や変数を操作しない、ってこと。

簡単な例を書くと、親(root)にA(A_mc)とB(B_mc)という子がいた場合、AがBに直接「動け!」と命令するのではなく、Aは親に話かけてってアピールし、親がAの話を聞いてBに命令する、というのが理想的な流れになります。

上の例をプログラムにすると以下のようになります。
自分で書いておきながら CustomEvent.as のsuperが何をしているのか正直サッパリ分かっていません。

//Main.as (root)
package {
	import flash.display.MovieClip;

	public class Main extends MovieClip {

		public function Main():void {
			A_mc.addEventListener(CustomEvent.MOVE_B, MoveB);
		}

		private function MoveB(e:CustomEvent):Event {
			B.Move();
		}
	}
}
//A.as (A_mc)
package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;

	public class A extends MovieClip {

		public function A():void {
			this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
		}

		private function onMouseDown(e:MouseEvent):Event {
			this.dispatchEvent(new CustomEvent("move_b"));
		}
	}
}
//B.as (B_mc)
package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;

	public class B extends MovieClip {

		public function B():void {

		}

		public function Move():void {
			this.x ++;
		}
	}
}
//CustomEvent.as
package {
	import flash.events.Event;

	public class CustomEvent extends Event {

		public static const MOVE_B:String = "move_b";

		public function CustomEvent(_type:String):void {
			super(_type, false, false);
		}

		public override function clone():Event {
			return new CustomEvent(type);
		}
	}
}

Posted by tmdf|

trackback

http://tmdf.net/blog/20090907_as3_pro.html/trackback

comments(0)

POST NEW COMMENT

  • name:*
  • e-mail:*

    The content of this field is kept private and will not be shown publicly.
  • website:
  • comment:*

    Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code>
    Lines and paragraphs break automatically.

Photo

PROFILE

森田 考陽 [Takaaki Morita]
Twitter: @tmdf
Other: mtdf.net

Designer / Programmer

RECENT POSTS

MONTHLY ARCHIVES