duplicateMovieClip (MovieClip.duplicateMovieClip メソッド)

public duplicateMovieClip(name: String, depth: Number, [initObject: Object]) : MovieClip

SWF ファイルの再生中に、指定されたムービークリップのインスタンスを作成します。duplicateMovieClip() メソッドを呼び出したときに元のムービークリップがどのフレーム上にあっても、複製されたムービークリップは常にフレーム 1 から始まります。複製元のムービークリップ内の変数は、複製されたムービークリップにコピーされません。duplicateMovieClip() メソッドを使用して作成されたムービークリップは、その親で duplicateMovieClip() メソッドを呼び出した場合は複製されません。親のムービークリップが削除されると、複製されたムービークリップも削除されます。MovieClip.loadMovie() または MovieClipLoader クラスを使用してムービークリップをロードした場合、SWF ファイルの内容は複製されません。つまり、JPEG ファイル、GIF ファイル、PNG ファイル、または SWF ファイルをロードした後でムービークリップを複製して帯域幅を節約することはできません。

このメソッドを duplicateMovieClip() のグローバル関数バージョンと比較してみます。このメソッドのグローバル関数バージョンでは、複製するターゲットムービークリップを指定するパラメータが必要になります。MovieClip クラスのバージョンでは、このようなパラメータは不要です。メソッドのターゲットが、メソッドが呼び出されるムービークリップインスタンスであるためです。さらに、duplicateMovieClip() のグローバルバージョンでは、initobject パラメータも、新しく作成された MovieClip インスタンスへの参照の戻り値もサポートされていません。

使用できるバージョン : ActionScript 1.0、Flash Lite 2.0

パラメータ

name: String - 複製したムービークリップの一意の識別子。

depth: Number - 新しいムービークリップを配置する深度を指定する一意の整数。新しいムービークリップインスタンスをオーサリング環境で作成されたすべてのコンテンツの下に配置するには、深度 -16384 を使用します。-16383 以上 -1 以下の値は、オーサリング環境での使用のために予約されているので、このメソッドでは使用しないでください。深度の有効値の範囲は 0 以上 1048575 以下です。

initObject: Object (オプション) - Flash Player 6 以降でのみサポートされます。複製ムービークリップに設定するプロパティを持つオブジェクトを指定します。このパラメータを使用すると、動的に作成したムービークリップは、クリップのパラメータを受け取ることができます。オブジェクトではない initObject は無視されます。initObject のすべてのプロパティが新しいインスタンスにコピーされます。initObject で指定されたプロパティは、コンストラクタ関数で使用できます。

戻り値

MovieClip - 複製されたムービークリップへの参照。Flash Player 6 以降でのみサポートされます。

次の例では、新しく作成されたムービークリップを何回か複製し、複製のたびにターゲットをトレースします。

var container: MovieClip = setUpContainer();
var ln: Number = 10;
var spacer: Number = 1;
var duplicate: MovieClip;
for(var i: Number = 1; i < ln; i++) {
    var newY: Number = i * (container._height + spacer);
    duplicate = container.duplicateMovieClip("clip-" + i, i, {_y: newY});
    trace(duplicate); // _level0.clip-[number]
}

function setUpContainer(): MovieClip {
    var mc: MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
    var w: Number = 100;
    var h: Number = 20;
    mc.beginFill(0x333333);
    mc.lineTo(w, 0);
    mc.lineTo(w, h);
    mc.lineTo(0, h);
    mc.lineTo(0, 0);
    mc.endFill();
    return mc;
}

関連項目

loadMovie (MovieClip.loadMovie メソッド), removeMovieClip (MovieClip.removeMovieClip メソッド), duplicateMovieClip 関数