第5回 ムービークリップインスタンスの動的生成(10月27日)

本日の課題

  • インスタンスの動的生成を使ったムービーを作成する
  • サンプル:
  • サンプルソースのダウンロード:081027_f.zip

ムービークリップインスタンスの動的生成

  • たくさんのインスタンスを配置する必要がある場合やインスタンスの数を動的に変化させたい場合などはインスタンスを動的に生成することで処理が簡単になる
  • インスタンスの動的生成にはステージに配置済みのインスタンスを複製する方法とリンケージシンボルから生成する方法がある
  • 空のインスタンスを生成することも可能

インスタンスの動的複製

  • インスタンスの複製にはduplicateMovieClipメソッドを使う
  • 書式:インスタンス.duplicateMovieClip("新しいインスタンス名", インスタンスの深度, プロパティリスト)
  • プロパティリストは省略可能
  • 例:
    // my_mcをコピーしてcopy_mcという名前のインスタンスを生成する
    // オプションでX座標Y座標を指定している
    my_mc.duplicateMovieClip("copy_mc", 100, {_x:0, _y:0});
  • 複製されたインスタンスの初期座標は元のインスタンスと同じになる

リンケージシンボルからのアタッチ

  • タイムラインに配置されていないムービークリップから動的にインスタンスを生成するにはムービークリップをリンケージシンボルとして書き出す必要がある
  • リンケージシンボルにはシンボル名とは別に識別子を付ける必要がある
  • リンケージシンボルからインスタンスを生成することをアタッチという
  • インスタンスのアタッチにはattachMovieメソッドを使う
  • 書式:attachMovie("識別子", "新しいインスタンス名", インスタンスの深度, プロパティリスト);
  • 例:
    // mySymbolという識別子のムービークリップから
    // my_mcという名前のインスタンスを生成する
    // 深度はgetNextHighestDepth()を使って最前面に配置
    var newDepth:Number = this.getNextHighestDepth();
    _root.attachMovie("mySymbol", "my_mc", newDepth);
  • 複製されたインスタンスの初期座標は原点になる

インスタンスの削除

  • 動的に生成されたインスタンスは不要になったときには削除する必要がある
  • 例:
    // 動的に生成されたmy_mcというインスタンスを削除する
    my_mc.removeMovieClip();

課題評価ポイント

  • クラス定義ファイルが正しく作成できているか?(20点)
  • リンケージシンボルの設定が正しくできているか?(20点)
  • ムービークリップのアタッチが正しくできているか?(20点)
  • インスタンス名や深度の管理が正しくできているか?(20点)
  • 効果的なムービーが作成できたか?(20点)

ファイル名に全角文字や記号を使わないこと

Flashファイル(*.fla)とASファイル(*.as)を提出する

提出期限は授業日の週の水曜日の午後9時