どこかの記事でも書いてあると思うけど、これだけ欲しい時にすぐ探せるようにメモです。
ちょっとどこかで自分が良く使うエクスプレッションをまとめたエクステンションを作ろう。
function nowKey(){
var targetLayer = thisLayer; //ここにターゲットとなるマーカーのあるレイヤーを設定する
var KeyN = 0;
if (targetLayer.marker.numKeys >0){
KeyN = targetLayer.marker.nearestKey(time).index;
if(targetLayer.marker.key(KeyN).time > time) KeyN--
}
return KeyN
}
これの変化形を作成
複数行のテキストにキーフレームがあり、行ごとに変化させる何らかのアニメーターを入れて
行ごとの秒数の確認をするように作ったもの
var targetcomp;
var myComp =[];
function nowKey(tl){
var targetLayer = tl; //ここにターゲットとなるマーカーのあるレイヤーを設定する
var KeyN = 0;
if (targetLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start.numKeys >0){
KeyN = targetLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start.nearestKey(time).index;
if(targetLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start.key(KeyN).time > time) KeyN--
}
return KeyN
}
function nextKey(tl){
var targetLayer = tl; //ここにターゲットとなるマーカーのあるレイヤーを設定する
var KeyN = 0;
if (targetLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start.numKeys >0){
KeyN = targetLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start.nearestKey(time).index;
if(targetLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start.key(KeyN).time <= time) KeyN++
}
return KeyN
}
for( var i = thisComp.numLayers ; i >= 1; i--){
if ( (thisComp.layer(i).active == true) ){
try{
myComp.push(thisComp.layer(i).index)
thisTimeLayer = thisComp.layer(myComp[myComp.length-2]);
thisTimeLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start;
nowKey(thisTimeLayer);
layerConvertArray =thisTimeLayer.text.sourceText.split("\r");
nowViewText = layerConvertArray[nowKey(thisTimeLayer)-1];
if ( nowViewText == "" ){
nowViewText = "空白行"
}else{
nowViewText
}
//時間の計算
nowKeyTime = thisTimeLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start.key(nowKey(thisTimeLayer)).time;
nextKeytime = thisTimeLayer.text.animator("アニメーター 1").selector("範囲セレクター 1").start.key(nextKey(thisTimeLayer)).time;
resultText = nowViewText.replace(/\s+/g, "");
resultText +"\r"+ sub(nextKeytime,nowKeyTime)+"秒"
}catch(e){
""
}
}
}