[ jsfl ] ライブラリのアイテムを置換してコピーするjsfl

2011/02/9

こんにちは。きんくまです。
ライブラリのアイテムを量産するときに便利なjsflを作りました。

例えば、グラフィックとムービークリップがあったとして、
名前の一番はじめにpg1というものをつけました。

1102_jsfl1_fig1

jsflの一番はじめの部分の検索条件をpg1、置換後の名前をpg2とします。
上の図の2つのアイテムを選択して、jsflを実行すると、下の図のように
名前と書き出し設定のパスを検索置換条件の通りに書き換えて複製します。

1102_jsfl1_fig2

例えば、結果画面など、構成は同じだけど、表示する中身は別のもののときに、
複製してパスを設定する手間が大変なので、作成しました。


var reg = new RegExp("pg1"); //検索条件
var newStr = "pg2"; //置換後の名前

var props = [];

getSelectedItemInfo();
duplicateItems();

function getSelectedItemInfo(){
	var items = fl.getDocumentDOM().library.getSelectedItems();
	var i;
	var item;
	var prop;
	for(i = 0; i < items.length; i++){
		item = items[i];
		prop = {
			name:item.name,
			linkageExportForAS:item.linkageExportForAS,
			linkageExportInFirstFrame:item.linkageExportInFirstFrame,
			linkageClassName:item.linkageClassName,
			linkageBaseClass:item.linkageBaseClass
		}
		props.push(prop);
	}
}

function duplicateItems(){
	var prop;
	var i;
	for(i = 0; i < props.length; i++){
		prop = props[i];
		var originalPath = prop.name;
		var idx = originalPath.lastIndexOf("/") + 1;
		var path = originalPath.substr(0,idx);
		var baseName = originalPath.substr(idx);
		var newName = baseName.replace(reg, newStr);
		var newPath = path + newName;

		fl.getDocumentDOM().library.duplicateItem(originalPath);
		fl.getDocumentDOM().library.selectItem(originalPath + " のコピー");
		var items = fl.getDocumentDOM().library.getSelectedItems();
		var item = items[0];
		item.name = newName;

		if(prop.linkageExportForAS){
			item.linkageExportForAS = true;
			item.linkageExportInFirstFrame = prop.linkageExportInFirstFrame;
			item.linkageClassName = prop.linkageClassName.replace(reg, newStr);
			if(prop.linkageBaseClass != ""){
				item.linkageBaseClass = prop.linkageBaseClass;
			}
			
		}
	}
}
LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る