Photoshop Javascript奇怪的行为

时间:2012-05-24 00:46:11

标签: javascript photoshop flash-cs5 photoshop-script

我正在试图弄清楚我或CS5 JavaScript引擎是否有问题。 我的Photoshop文档有一个名为“A”的图层和一个名为“Group 1”的图层组。

考虑这个例子:

var Mess = "";
var Layers = app.activeDocument.layers;
alert(Layers.length);
for (n=0; n<app.activeDocument.layers.length; n++) {
  Mess = Mess + app.activeDocument.layers[n].name + "\r\n";
}
alert(Mess);

这将显示2的长度,然后列出图层:
一个
第1组

到目前为止一切都很好。但是如果我们在foor循环中使用变量Layers,我们会得到不同的结果。

var Mess = "";
var Layers = app.activeDocument.layers;
alert(Layers.length);
for (n=0; n<Layers.length; n++) {
  Mess = Mess + app.activeDocument.layers[n].name + "\r\n";
}
alert(Mess);

和以前一样,我们得到长度2,但现在只列出了一层:

这两个代码示例不应该产生相同的结果吗?!?

1 个答案:

答案 0 :(得分:4)

我认为Layers是Photoshop DOM中的保留字。 Photoshop CS6 JavaScript Reference

var Mess = "";
var lyrs = app.activeDocument.layers;
alert(lyrs.length);
for (n=0; n<lyrs.length; n++) {
    Mess = Mess + app.activeDocument.layers[n].name + "\r\n";
}
alert(Mess);

在更改变量名称后,这似乎现在可以正常工作。