Ausgabe
Ich habe diesen Code und er funktioniert, aber er sieht den Text in der Ebenengruppe nicht und iteriert nicht darüber.
var itemsAry=['emil','lardtub','100','jsbus', 'rasmus','null','1000000'];
var layers = app.activeDocument.layers;
for (var i =0; i<layers.length; i++) {
if (layers[i].kind == "LayerKind.TEXT") {
layers[i].textItem.contents=itemsAry[i]
}
}
Lösung
Während sich das Durchlaufen aller Ebenen in einem Dokument auf SO befindet, kann es verwirrend sein, vom Durchlaufen einer Reihe von Ebenen bis hin zur Umständlichkeit des Durchlaufens einer PSD mit darin enthaltenen Gruppen.
Grundsätzlich benötigen Sie eine rekursive Funktion, um die Gruppen zu durchlaufen.
Beachten Sie, dass Sie alle Dialogfelder am Anfang des Skripts deaktivieren, wenn Sie Text ändern. Andernfalls müssen Sie jede Textänderungsbestätigung validieren.
// Switch off any dialog boxes
displayDialogs = DialogModes.NO; // OFF
var itemsAry=['emil','lardtub','100','jsbus', 'rasmus','null','1000000'];
// group layer vegetables
var theLayers = collectAllLayers(app.activeDocument, 0);
// function collect all layers
function collectAllLayers (theParent, level)
{
for (var m = theParent.layers.length - 1; m >= 0; m--)
{
var theLayer = theParent.layers[m];
// apply the function to layersets;
if (theLayer.typename == "ArtLayer")
{
if (theLayer.kind == "LayerKind.TEXT")
{
theLayer.textItem.contents=itemsAry[m];
}
}
else
{
collectAllLayers(theLayer, level + 1)
}
}
}
// Make sure dialogs back on
displayDialogs = DialogModes.ALL; // ON
Beantwortet von – Ghoul Fool
Antwort geprüft von – Clifford M. (FixError Volunteer)