複数のレイヤーをコピーしたいが、できない

Flash は、複数のレイヤーを一度にコピーすることができない。 例えば、_root に作ってしまった複数のレイヤー、複数のフレームに渡るアニメーションを、新規作成した MovieClip にコピーしたいというニーズが多々あるのに、できない。

いや、できないというのは語弊がある。 レイヤー 1 のフレーム 1 を選択した後、Shift キーを押しながらレイヤー n の、フレーム n を選択してからコピーすれば、一応、できる。 ただし、多くの Flash ユーザが経験するであろうこの行為、ペーストした後がつらい。全レイヤーのフレーム数が一番長いものに統一されてしまうのだ。

意図する動作を JSFL で実行できないものかと調べた結果、やはり、できないことがわかった。以下のスクリプトで一見正しそうに見えるが、クリップボードにコピーされていない。 フレームが選択された状態で、タイムラインのコンテキストメニューを開いても「フレームのコピー」は不可になっている。

//レイヤー 1 のフレーム 1 にカーソルがある状態で実行
var timeline = fl.getDocumentDOM().getTimeline();
timeline.currentLayer = 0;
timeline.currentFrame = 0;
for (var i = 0; i < timeline.layers.length; i++) {
var frameTotal = timeline.layers[i].frames.length;
timeline.currentLayer = i;
timeline.setSelectedFrames(0, frameTotal, false);
}
timeline.copyFrames();

どうやら、複数のレイヤーのフレームをコピーするためには、「選択されたレイヤーの選択されたフレーム数が全て同じである」必要があるらしい。