« ActionScript 3.0入門 9月キャンプもやります! | メイン | 7.1 Spriteクラスに図形を描く(1) »

6.1 MovieClipクラスのインスタンス

■MovieClipクラスのインスタンスを作る
ActionScript 2.0でのMovieClipクラスのインスタンスの作り方は、ほかのクラスと違ってcreateEmptyMovieClip()という専用のメソッドを使っていました。しかし、ActionScript 3.0からはほかのクラスと同じようにnew演算子を使ってインスタンスを作るようになりました。すなわち、次の式でMovieClipクラスのインスタンスを作ることができます。

例:MovieClipインスタンスを作る
var mc:MovieClip = new MovieClip();

ただ、これだけでは空のインスタンスが作られただけにすぎません。これに絵を描いたり、ほかの表示オブジェクトを追加するといった使い方をします。さらに、ステージに表示されるようにするには、このインスタンスを表示リストに追加する必要があります。
次のMyMovieClip1クラスは、引数で指定した表示オブジェクトコンテナに円を描いたMovieClipインスタンスを追加します。手順としては先にMovieClipインスタンスmcを作り、円を描きます。次にインスタンスを引数で指定した表示オブジェクトmy_containerにaddChild()メソッドで追加します。

[:sample:] MyMovieClip.as
例:円を描いたMovieClipインスタンスを作って表示するMyMovieClipクラス
package {
	import flash.display.DisplayObjectContainer;
	import flash.display.MovieClip;

	public class MyMovieClip {
		var my_container:DisplayObjectContainer;
		//コンストラクタ
		function MyMovieClip(container:DisplayObjectContainer) {
			my_container=container;
			makeMC();
		}
		//インスタンスを作る
		function makeMC():void {
			var mc:MovieClip = new MovieClip();
			//イメージ描画
			//円を描く
			mc.graphics.beginFill(0xFFCC00);
			mc.graphics.drawCircle(0, 0, 40);
			//プロパティ設定
			mc.x = 250;
			mc.y = 200;
			//表示
			my_container.addChild(mc);
		}
	}
}

新規にムービーファイルを作り、次のフレームアクションをメインのタイムラインに書いてMyMovieClipクラスをテストします。

[:sample:] myMovieClipSample.fla
例:メインのタイムラインのフレームアクション
var mcObj:MyMovieClip = new MyMovieClip(this);

fig06-01-01 MovieClipインスタンスを作って円を描き、ステージに表示します。

円は作成したインスタンスmcのローカル座標(0,0)の位置に半径40の円をGraphicsクラスのdrawCircle()メソッドを使って描いています。そしてmcの座標を引数で指定したコンテナのローカル座標の(250,200)に移動しています。このサンプルではコンテナとしてメインのタイムラインのフレームアクションでthisを指定していることから、メインのタイムラインがコンテナになります。すなわち、座標(250,200)はステージのグローバル座標と一致します。
なお、円を描くためにGraphicsクラスのメソッドを使いますが、次のようにGraphicsクラスのメソッドにはSpriteクラスのgraphicsプロパティを通してアクセスしています。このためGraphicsクラスをインポートする必要がありません。

例:
mc.graphics.beginFill(0xFFCC00);

About

2007年7月26日 09:18に投稿されたエントリーのページです。

ひとつ前の投稿は「ActionScript 3.0入門 9月キャンプもやります!」です。

次の投稿は「7.1 Spriteクラスに図形を描く(1)」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。