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

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++;
		}
	}
}