■MovieClipクラスのインスタンスを作る
ActionScript 2.0でのMovieClipクラスのインスタンスの作り方は、ほかのクラスと違ってcreateEmptyMovieClip()という専用のメソッドを使っていました。しかし、ActionScript 3.0からはほかのクラスと同じようにnew演算子を使ってインスタンスを作るようになりました。すなわち、次の式で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クラス
新規にムービーファイルを作り、次のフレームアクションをメインのタイムラインに書いてMyMovieClipクラスをテストします。
[:sample:] myMovieClipSample.fla
例:メインのタイムラインのフレームアクション
fig06-01-01 MovieClipインスタンスを作って円を描き、ステージに表示します。
円は作成したインスタンスmcのローカル座標(0,0)の位置に半径40の円をGraphicsクラスのdrawCircle()メソッドを使って描いています。そしてmcの座標を引数で指定したコンテナのローカル座標の(250,200)に移動しています。このサンプルではコンテナとしてメインのタイムラインのフレームアクションでthisを指定していることから、メインのタイムラインがコンテナになります。すなわち、座標(250,200)はステージのグローバル座標と一致します。
なお、円を描くためにGraphicsクラスのメソッドを使いますが、次のようにGraphicsクラスのメソッドにはSpriteクラスのgraphicsプロパティを通してアクセスしています。このためGraphicsクラスをインポートする必要がありません。
例:
次の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);