タイムライン上でシンボルがアニメーションしていたり、おいてあります。
各シンボル名がpg1からはじまるものとして、jsflに検索と置換条件を設定します。
ここでは検索名にpg1、置換部分にpg2として、置換後に入っているフォルダをfolder2としました。
それでシンボルを入れ替えたいレイヤーを選択したあと、jsflを実行すると、
pg2Title, pg2Mainというふうにタイムライン上のシンボルが全部いれかわります。
jsflの中身は、検索条件にレイヤー名は含まれておらず、
選択したレイヤーのキーフレームをすべて抽出。キーフレーム上のシンボルのライブラリ名を確認。
検索して、ライブラリの置換条件にあうものとさしかえ。
というふうになっています。
var searchStr = new RegExp("pg1"); //検索シンボルの一部名前 var replaceStr = "pg2" //置き換える名前(置換後にあるんだったら一部でもOK) var folderPath = "folder2" //置き換えるアイテムが入っているフォルダ名 var time = fl.getDocumentDOM().getTimeline(); var layerNums = time.getSelectedLayers(); var i,j,k; var layers, frames, layerNum, elem, elems; layers = time.layers; var oldName, newName; var index, library; library = fl.getDocumentDOM().library; for(i = 0; i < layerNums.length; i++){ layerNum = layerNums[i]; frames = layers[layerNum].frames; for(j = 0; j < frames.length; j++){ if(j == frames[j].startFrame){ time.setSelectedFrames(j, j); elems = frames[j].elements; for(k = 0; k < elems.length; k++){ elem = elems[k]; if(elem.elementType == "instance"){ oldName = elem.libraryItem.name; newName = oldName.replace(searchStr, replaceStr); newName = newName.substr(newName.lastIndexOf("/") + 1); index = library.findItemIndex(folderPath + "/" + newName); if(index != ""){ elem.libraryItem = library.items[index]; } } } } } }
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ