[jsfl]ライブラリで複数選択しているものをASの書き出し設定を保ちつつ置換して複製

2010/06/3

10/06/04追記 昨日投稿したスクリプトだと、単純に空のMCを追加するだけだったので、
まちがってました。なので、ちゃんと選択したやつを複製するようにしました。

—————————————–

こんにちは。きんくまです。
タイトルが長いんですけど、今回はjsflです。

今回作ったやつ

var reg = new RegExp("[0-9]"); //検索条件
var newStr = "2"; //置換後の名前

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

どんなもの

1.ライブラリで複製したいものを複数選択
2.上のjsflを実行
3.一番上の検索・置換条件に応じて、アイテムが複製される

やつです。
実際に見てみましょう。
もともとの状態です。2つのMCがあって、それぞれに書き出し設定がされています。
ちなみに、書き出し設定してないやつがまじっていても複製はうまくいきます。

duplicate_jsfl_fig1

MyMC1

duplicate_jsfl_fig2

MyMC1Main

duplicate_jsfl_fig3

基本クラスがちがったり、1フレーム目に書き出しの設定をわざと変えてあります。
そんで、この2つのアイテムをライブラリ上で選択したあと、上のjsflを実行すると
(拙作jsflEdit使うと便利です)

なんか増えてる!

duplicate_jsfl_fig4

増えたやつの名前の条件は、今回は正規表現で、「数字を見つけたら2に変更する」ってやったので、MyMC2とかってなってます。
もしMyMC1,MyMC1MainをYourMC1,YourMC1Mainと変換したい場合は
検索条件を以下のようにやると動作します。

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

MyMC2

duplicate_jsfl_fig5

MyMC2Main

duplicate_jsfl_fig6

1フレーム目に書き出しとか、基本クラスはそのまま継承している点に注目です。
あとは、検索・置換条件を変えてスイスイと複製しまくれそうです。

仕様
・もともとの名前に応じて検索・置換。
・基本クラスはそのままコピー
・クラスは名前で置換
・1フレーム目に書き出し、ActionScript用に書き出し設定はコピー

制作中のもので大量のMCを複製しなきゃいけないので作ってみました。


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

ページトップへ戻る