我正在尝试将三个文本图层添加到photoshop(可能更晚一些),并且我想在每个中更改3位信息,因此我认为循环是理想的。
// create a new text layers and add them to the document
var newTextLayer1 = docRef.artLayers.add();
var newTextLayer2 = docRef.artLayers.add();
var newTextLayer3 = docRef.artLayers.add();
// positions of layers
var pos1 = Array(0,100);
var pos2 = Array(0,200);
var pos3 = Array(0,300);
// store text in variables
var row1 = "1st row";
var row2 = "2nd row";
var row3 = "3rd row";
//loop for text-layers settings
for (i = 1; i < 4; i++) {
newTextLayer+i.kind = LayerKind.TEXT;
newTextLayer+i.textItem.size = 12;
newTextLayer+i.textItem.contents = row+i;
newTextLayer+i.textItem.font = "Courier";
newTextLayer+i.textItem.color = textCol;
newTextLayer+i.textItem.position = pos+i;
}`
我知道这不起作用,但有人可以指导我找到最佳解决方案
答案 0 :(得分:0)
我不确定具体的photoshop api - 不过我相信你的问题可以通过将nextTextLayer,text和position对象存储在数组中来解决。
var layers = [
docRef.artLayers.add(),
docRef.artLayers.add(),
docRef.artLayers.add()
];
// Using array literals
var positions = [
[0, 100],
[0, 200],
[0, 300]
];
var texts = [
'1st row',
'2nd row',
'3rd row'
];
// now you can access each value correctly by supplying the current
// value of the loop counter variable.
for (var i = 0; i < 3; i++) {
layers[i].kind = LayerKind.TEXT;
layers[i].textItem.size = 12;
layers[i].textItem.contents = texts[i];
layers[i].textItem.font = 'Courier';
layers[i].textItem.color = textCol;
layers[i].textItem.position = positions[i];
}
由于javascript数组只是具有数字索引的对象,因此您可以轻松地从循环中访问存储的值(可以是其他对象)。