<=前の記事ExtendScript + Expression
これで、タイトルのレイアウトが用意できました。私たちはホームストレッチに向かって動いています。スクリプトを追加して、モデルをシーンにコピーする方法を追加するだけです。
createTitresメソッドに入り、シーンを追加した直後にサイクルを開始し、タイトルデータを含む配列をトラバースします。
function createTitres(data) {
var scenesData = getScenesData();
for(var i = 0; i < scenesData.length; i++) {
var scene = getScene(scenesData[i]);
for (var j = 0; j < data.length; j++) {
var titreName = 'titre-' + j + '-' + scenesData[i].type;
var layer = scene.layers.byName(titreName);
}
}
}
ループでは、最初にステージでタイトルを見つけようとします。これを行うには、コンポジションのlayersプロパティとそのbyNameメソッドを参照します。なぜこれを行うのか、少し後で説明します。今のところ、メソッドがnullを返す状況を見てみましょう。これは、その名前のレイヤーがないことを意味します。
if (!layer) {
var modelName = 'ModelTitre_' + data[j].type + '_' + scenesData[i].type;
var item = getTitreComp(modelName);
}
//………………………………………………………………………………………//
function getTitreComp(modelName) {
var item = getItem(modelName, CompItem);
if (!item) {
alert(' ' + modelName);
return null;
}
return item.duplicate();
}
getTitreCompメソッドで、タイトルモデルを見つけ、見つからない場合はnullを返します。モデルが見つかった場合は、その複製を返します。次に、複製の名前を変更し、layers.addメソッドを使用してシーンに追加します。これにより、複製のあるレイヤーが返されます。
if (item) {
item.name = titreName;
layer = scene.layers.add(item);
}
. editLayer, , ( ) ModelScene, .
, startTime ,
var scene = getScene(scenesData[i]);
var startTime = 0;
editLayer
, getScenesData , layers, .
data.push({
type: item.name.split('_')[1],
width: item.width,
height: item.height,
frameRate: item.frameRate,
duration: item.duration,
layers: item.layers
});
createTitres . editLayer
if (item) {
item.name = titreName;
layer = scene.layers.add(item);
var modelLayer = scenesData[i].layers.byName(modelName);
startTime = editLayer(layer, startTime, modelLayer);
}
editLayer
function editLayer(layer, startTime, modelLayer) {
if (modelLayer) {
// -
} else {
//
}
}
, - , . , .
layer.startTime = startTime;
layer.outPoint = startTime + 5;
, .
,
layer.label = modelLayer.label;
layer.startTime = startTime;
var layerDuration = modelLayer.outPoint - modelLayer.startTime;
layer.outPoint = startTime + layerDuration;
, . , . , , . startTime, layer.outPoint, .
function editLayer(layer, startTime, modelLayer) {
layer.startTime = startTime;
if (modelLayer) {
layer.label = modelLayer.label;
var layerDuration = modelLayer.outPoint - modelLayer.startTime;
layer.outPoint = startTime + layerDuration;
} else {
layer.outPoint = startTime + 5;
}
return layer.outPoint;
}
createTitres. Expressions . , ModelScene_1x1. scene-1x1
startTime = editLayer(layer, startTime, modelLayer);
changeExpression(
item,
'ModelScene_' + scenesData[i].type,
'scene-' + scenesData[i].type
);
//................................................................
function changeExpression(comp, search, replacement) {
for (var i = 1; i <= comp.numLayers; i++) {
var layer = comp.layer(i);
var propGroup = layer.property('ADBE Transform Group');
for (var j = 1; j <= propGroup.numProperties; j++) {
var prop = propGroup.property(j);
if (prop.expression) {
prop.expression = prop.expression.replace(
new RegExp(search, 'g'),
replacement
)
}
}
}
}
changeExpression , . . numLayers. . ADBE Transform Group ( After Effects ). , numProperties. , ModelScene_1x1 titre-1x1.
. , , .
changeExpression(
item,
'ModelScene_' + scenesData[i].type,
'scene-' + scenesData[i].type
);
setText(item.layers.byName('reference_text'), data[j].text)
//................................................................
function setText(layer, text) {
if (layer) {
var property = layer.text.property("Source Text");
var value = property.value;
value.text = text;
property.setValue(value);
}
}
setText reference_text, , .
setText SourceText, text, , , .
. , .
for (var j = 0; j < data.length; j++) {
var titreName = 'titre-' + j + '-' + scenesData[i].type;
var layer = scene.layers.byName(titreName);
if (!layer) {
var modelName = //....
//....
} else {
setText(
layer.source.layers.byName('reference_text'),
data[j].text
);
}
}
. source, , .
. .
#simple simple #simple simple #double double
.
, .
.
, refernce_text.
, , , . , . , . . , .
ExtendScriptでのレイヤーの操作に関するドキュメントはこちら。
ご清聴ありがとうございました。これらのレッスンが誰かに役立つことがわかった場合、読者がこれらのスキルを適用するプロジェクトについて学ぶことは素晴らしいことです。
<=前の記事ExtendScript + Expression