2012-05-24 3 views
2

Я пытаюсь выяснить, что-то не так со мной или с движком JavaScript CS5. В моем документе Photoshop есть один слой под названием «A» и группа слоев, называемая «Группа 1».Photoshop Javascript странное поведение

Рассмотрим следующий пример:

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

Все отлично до сих пор. Но если мы в замкнутом цикле будем использовать переменную 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, но теперь только один слой в списке:

Не следует два примера кода дают одинаковый результат?!?

+0

Есть ли предупреждение (app.activeDocument.layers.length) 'say 2? Это единственное, что я вижу. –

+0

Да, 'alert (app.activeDocument.layers.length)' говорит 2. Но если я получаю доступ к объекту слоев через переменную, это не похоже на то же самое. –

+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); 

Это похоже на работу теперь после изменения имени переменной.

+0

Знаете ли вы, где я могу найти список зарезервированных слов Photoshop DOM? Вы, где верно. Когда я сменил имя, он сработал. –

+0

Вы используете инструментарий ExtendScript в качестве среды IDE? Если это так, вы можете выбрать «Справка> Object Model Viewer» для просмотра DOM. Не забудьте выбрать, какую библиотеку объектов вы хотите просмотреть (Photoshop, Illustrator и т. Д.) В раскрывающемся меню. – pdizz

+0

My ExtendScript Toolkit CS5 сломан, он жалуется на строку 1 в скрипте 04cdicmanager.jsx, поэтому я не могу запустить его. Так было с самого начала (свежая инсталляция). –

Смежные вопросы