用于photoshop的javascript中的动态变量增量

时间:2015-10-08 00:52:30

标签: javascript loops variables photoshop photoshop-script

我正在尝试将三个文本图层添加到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;
}`

我知道这不起作用,但有人可以指导我找到最佳解决方案

1 个答案:

答案 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数组只是具有数字索引的对象,因此您可以轻松地从循环中访问存储的值(可以是其他对象)。