LoginSignup
0
0

More than 3 years have passed since last update.

FlashAICBアセットフォルダーの整理.jsfl

Last updated at Posted at 2012-12-26

FlashAICBアセットフォルダーは、FlashへPhotoshopやIllustratorからコピー&ペーストを行うと増殖する困り者です。
このJSFLは、そのFlashAICBアセットフォルダーを単一のフォルダーにマージするためのものです。FlashAICBアセットフォルダーの中身は、リネームされてフォルダー内に移動されます。

/**
 *  ライブラリ内のFlashAICBフォルダを_materialという新規フォルダにマージします。
 *  既知の問題点
 *  ・フォルダ名に"/"の含まれているものがあると、移動に失敗します(@2009.01.30)
 *      →アイテムが誤って消去されることはありませんが、_materialに移動せず元のフォルダに残ります。
 *
 *      @version 2009.01.30
 */
fl.showIdleMessage(false);
main();

function main()
{
    fl.trace("");
    fl.trace("FlashAICB Folders ..........");

    var flaFolderName = "FlashAICB";
    var materialFolderName = "_material";
    var tempFolderName = "__MovingTmpFolder";
    var doc = fl.getDocumentDOM();
    var lib = doc.library;

    lib.newFolder( materialFolderName );
    lib.newFolder( tempFolderName);

    var folderItems = getFolderItems( lib, flaFolderName);
    var materialItems = getFolderItems( lib, materialFolderName );
    var folderItems = folderItems.concat( materialItems );

    //現_materialフォルダ内のオブジェクトを退避
    var n = materialItems.length ;
    for ( var i = 0; i < n; i++ )
    {
        lib.selectItem( materialItems[i].name );
        lib.moveToFolder( tempFolderName );
    }

    renameAndMove( lib, folderItems, "movie clip",materialFolderName, "<MovieClip>_");
    renameAndMove( lib, folderItems, "bitmap",materialFolderName, "<image>_");
    renameAndMove( lib, folderItems, "component",materialFolderName, "<component>_");
    renameAndMove( lib, folderItems, "graphic",materialFolderName, "<graphic>_");
    renameAndMove( lib, folderItems, "button",materialFolderName, "<button>_");
    renameAndMove( lib, folderItems, "font",materialFolderName, "<font>_");
    renameAndMove( lib, folderItems, "sound",materialFolderName, "<sound>_");   
    renameAndMove( lib, folderItems, "compiled clip",materialFolderName, "<compiled clip>_");
    renameAndMove( lib, folderItems, "screen",materialFolderName, "<screen>_");
    renameAndMove( lib, folderItems, "video",materialFolderName, "<video>_");

    lib.deleteItem(tempFolderName);

    fl.trace("Command Complete.");      
}
/**
 *  ライブラリの特定フォルダ内にあるアイテムを検索する処理
 *  @param  lib             Libraryオブジェクト
 *  @param  flaFolderName   検索対象となるフォルダパス
 *  @return     Array           Itemオブジェクト,Folderオブジェクトは含まないs
 *  @since  2009.01.30
 *  @version    2009.01.30
 */
function getFolderItems(lib, flaFolderName)
{
    var folderItems = [];

    var n = lib.items.length;
    var i = 0;
    for ( i = 0; i < n; i ++)
    {
        var tmpItem = lib.items[i];
        if( tmpItem.itemType != "folder" ) 
        {       
            var nameIndex = tmpItem.name.indexOf( flaFolderName );
            if( nameIndex == 0 ) folderItems.push(tmpItem);
        }
    }
    return folderItems;
}

/**
 *  ライブラリアイテムを種類ごとにリネームしつつフォルダに移動
 *  @param  lib             Libraryオブジェクト
 *  @param  items           移動するアイテムの配列
 *  @param  type            移動するアイテムの種類
 *  @param  folderPath      異動先フォルダパス
 *  @param  nameHeader  リネームヘッダ
 *  @since  2009.01.30
 *  @version    2009.01.30
 */

function renameAndMove( lib, items, type, folderPath,  nameHeader )
{
    var count = 1;
    var n = items.length;
    for ( var i = 0; i < n; i++ )
    {
        var tmpItem = items[i];
        if( tmpItem.itemType == type)
        {
            lib.selectItem( tmpItem.name );
            lib.renameItem( "*********renamingItem");
            lib.moveToFolder( folderPath);
            lib.selectItem( tmpItem.name );
            var strCount = "000000" + count;
            strCount = strCount.substr( strCount.length - 4 , strCount.length);
            lib.renameItem( nameHeader + strCount );
            count++;
        }
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0