<= Vorheriger Artikel ExtendScript + Ausdruck
Und so haben wir ein Layout für Titel parat. Wir bewegen uns in Richtung der Heimstrecke. Wir müssen nur das Skript hinzufügen und es durch Methoden zum Kopieren von Modellen in die Szene ergänzen.
Wir gehen in die Methode createTitres und starten unmittelbar nach dem Hinzufügen der Szene den Zyklus, indem wir das Array mit den Titeldaten durchlaufen.
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);
}
}
}
In der Schleife versuchen wir zuerst, den Titel auf der Bühne zu finden. Zu diesem Zweck verweisen wir auf die Layer- Eigenschaft der Komposition und ihre byName- Methode . Warum wir das tun, werden wir etwas später besprechen. Lassen Sie uns zunächst die Situation betrachten, in der die Methode null an uns zurückgibt , was bedeutet, dass es keine Ebene mit diesem Namen gibt.
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();
}
In der getTitreComp- Methode finden wir das Titelmodell und geben null zurück , wenn wir keines gefunden haben . Wenn das Modell gefunden wird, geben wir sein Duplikat zurück. Als Nächstes benennen wir das Duplikat um und fügen es der Szene mit der Ebene.add hinzu , die uns die Ebene mit dem Duplikat zurückgibt.
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.
, , , . , . , . . , .
Dokumentation zum Arbeiten mit Ebenen in ExtendScript hier .
Vielen Dank für Ihre Aufmerksamkeit. Wenn sich diese Lektionen für jemanden als nützlich erweisen, ist es hilfreich, sich über Projekte zu informieren, in denen die Leser diese Fähigkeiten anwenden.
<= Vorheriger Artikel ExtendScript + Ausdruck