■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);