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();
どうやら、複数のレイヤーのフレームをコピーするためには、「選択されたレイヤーの選択されたフレーム数が全て同じである」必要があるらしい。