シンボルを置き換え
結局あれから何かと猫の手に追加したり
書き直したりしてます
今回はそういえば作ってなかったぞ、というもの
『シンボルの置き換え』
オーサリングだと複数のインスタンスのシンボルを
一気に入れ替えってできなくて不便なので
作っておきたいなとおもってたものです
ついでに複数のシンボルを選択すれば
選択したシンボルに順繰りに
置き換えて行くようにしました
順繰り置き換えの使いどころはよくわからないですが
複数のインスタンスの元シンボルをまとめて
別のシンボルに置き換えたい場面ってのは
結構あるんじゃないでしょうか
実は、このスクリプトではインスタンスを一個ずつ
巡回してswapElementしてますが
JSFLでは複数選択状態のまま
dom.swapElementしても
ちゃんと全部入れ替えしてくれます
書き直したりしてます
今回はそういえば作ってなかったぞ、というもの
『シンボルの置き換え』
オーサリングだと複数のインスタンスのシンボルを
一気に入れ替えってできなくて不便なので
作っておきたいなとおもってたものです
ついでに複数のシンボルを選択すれば
選択したシンボルに順繰りに
置き換えて行くようにしました
順繰り置き換えの使いどころはよくわからないですが
複数のインスタンスの元シンボルをまとめて
別のシンボルに置き換えたい場面ってのは
結構あるんじゃないでしょうか
function init(){
dom=fl.getDocumentDOM()
sel=dom.selection
tml=dom.getTimeline()
lyr=tml.layers[tml.currentLayer]
frm=tml.layers[tml.currentLayer].frames[tml.currentFrame]
indList=tml.getSelectedLayers()
bgn=tml.currentFrame
}
function swapEle(){
init()
dom.selectNone()
var itms=dom.library.getSelectedItems()
var cnt=0
for each(var ele in sel){
ele.selected=true
dom.swapElement(itms[(cnt%itms.length)].name)
ele.selected=false
cnt++
}
}
実は、このスクリプトではインスタンスを一個ずつ
巡回してswapElementしてますが
JSFLでは複数選択状態のまま
dom.swapElementしても
ちゃんと全部入れ替えしてくれます
ビルドアニメーション軽量化
JSFLでは少しぐらいよけいな処理が代わりに必要になっても
クリップボードは使わない方が軽いとか
思ってたけどそんなことはなかったという話
今までビルドアニメーションは上のようなカンジで
全部のパーツがある状態から要らないものを
削除して残ったものの再生開始フレームを
適したものに設定するという形をとってました

けどパーツが400超ぐらいになると1分近く時間がかかってくる
多分毎フレーム全てのパーツを巡回して削除したり再生開始フレームを
設定してるのが重いからなんだろうと思って
下のように巡回が減るように最初に全部をカットして
各フレームでペースト、必要なものを残してカット
を繰り返すような処理にしたらなんだか軽くなってくれました
所詮JSFLは手作業の代わりににオーサリング作業をするだけのスクリプトなんで
処理の数がそのまま速度に影響してくるようなカンジみたいですね
クリップボードは使わない方が軽いとか
思ってたけどそんなことはなかったという話
今までビルドアニメーションは上のようなカンジで
全部のパーツがある状態から要らないものを
削除して残ったものの再生開始フレームを
適したものに設定するという形をとってました

けどパーツが400超ぐらいになると1分近く時間がかかってくる
多分毎フレーム全てのパーツを巡回して削除したり再生開始フレームを
設定してるのが重いからなんだろうと思って
下のように巡回が減るように最初に全部をカットして
各フレームでペースト、必要なものを残してカット
を繰り返すような処理にしたらなんだか軽くなってくれました
所詮JSFLは手作業の代わりににオーサリング作業をするだけのスクリプトなんで
処理の数がそのまま速度に影響してくるようなカンジみたいですね