ライブラリの選択中のアイテムをフレームに配分するJSFL


Flashで数字入りの画像をタイムラインに並べたい時に、一気に並べられたら便利だなーと思って作ってみた。

正確にはどっかにあるかなーと思って探してみたら、Kayacのブログが出てきたけれど、ファイルをDLできなかったので作ってみたという感じです。

/**
 * 選択中のアイテムをフレームに分配
 */
var _doc = fl.getDocumentDOM();
var _timeline = _doc.getTimeline();
var _lib = _doc.library;

function main(){
     fl.outputPanel.clear();

     var selectedItems = _lib.getSelectedItems();
     var numItem = selectedItems.length;

     if(numItem == 0){
          fl.trace('何も選択されていません');
     }
     else{
          _timeline.convertToKeyframes(0, numItem);
          fl.trace(numItem);
          for(var i = 0; i < numItem; i++){
               var item = selectedItems[i];
               var name = item.name;
               name.match(/[0-9]+/g);
               var num = parseInt(RegExp.lastMatch);
               if(selectedItems.length == 10 && num == 0){
                    num = 10;
               }
               setNumFrame(item, num);
          }
          fl.trace("処理が完了しました");
     }
}

/**
 * 指定したフレームに配置
 */
function setNumFrame(item, frame){
     _timeline.currentFrame = frame - 1;
     _doc.addItem({x:0, y:0},item);
     _doc.selectNone();
     _doc.selectAll();
     var elem = _doc.selection[0];
     var mat = elem.matrix;
     mat.tx = 0;
     mat.ty = 0;
     elem.matrix = mat;
}

main();

使い方

  1. 空のムービークリップを作成、編集モードに入る
  2. ライブラリのアイテムを選択(ライブラリアイテムは数値があるものとする)
  3. コマンドを実行

数値がフレーム番号になります。中を見れば分かるかと思いますが、0~9の時のみ、0番は10フレーム目に置きます(数値を画像にしたとき用)。数字のないものはうまく配置できません。

上をコピペすれば動くと思いますが一応ファイル

使用の際はバックアップなど行ったほうが良いかと思います。あんまり多いとフリーズするかもしれません。50程度は問題なく動きました。(WinXP+CS5で確認)

参考