Я хотел бы запустить код, протестировав только текущий выбор (не весь документ), и мне трудно понять, как именно массив «app.selection» «и его методы работают. Для начала, я использую «для» цикла к циклу через каждый элемент, выбранный с помощью:Как использовать app.selection [0] для скриптов в Adobe InDesign
for(loop = 0; loop < app.selection.length; loop++){
var sel = loop;
}
Это работает хорошо, но когда я хочу, чтобы в определении того, что каждый элемент IS, это становится немного странно. Например,
for(txt = 0; txt < app.selection[sel].textFrames.length; txt++){
// do something to each text frame in the selection here.
}
не работает, как ожидалось, но
for(img = 0; img < app.selection[sel].allGraphics.length; img++){
// do something to each graphic in the selection here
}
, кажется, работает хорошо, независимо от того, выбор включает в себя больше, чем просто графики в одиночку, или он находится внутри или за пределами группы.
Временами кажется, что app.selection [0] - единственный способ получить доступ к элементу самостоятельно. Другими словами, если выбран текстовый фрейм, app.selection [0] может быть таким же, как app.document.textFrames [0], в этом случае было бы излишним (и неправильно), чтобы сказать
app.document.textFrames[0].textFrames[0]
И все же одна и та же концепция на разных страницах работает как шарм. Это довольно озадачивает. Кроме того, представляется невозможным определить, какой предмет является объектом. Я хочу сказать что-то вроде:
if (app.selection[0] == [object TextFrame])
но это не работает для меня. Есть ли способ четко проверить, является ли текущий элемент группой, графическим или текстовым фреймом и делать разные вещи в зависимости от результата?
Отличный отклик! У меня есть другой вопрос относительно всех текстовых фреймов. Чтобы обновить ситуацию в моем вопросе, где app.selection.allGraphics [0] действовал нормально и app.selection.textFrames [0] неправильно, кажется, что это не вопрос недопонимания массива выбора (хотя ваш ответ очистил вопросы, которые у меня были об этом.) allGraphics находит каждый последний доступный графический файл, в то время как textFrames извлекает самые внешние текстовые фреймы в группе. Есть ли эквивалент для allTextFrames? –
Не существует свойства allTextFrames, по крайней мере, ни в одной из версий ID, с которыми я работал (от 5.5 до CC). Существует свойство allPageItems. Я добавлю об этом примечание. – Christina
Отлично! Благодаря! У меня теперь есть рабочая версия благодаря allPageItems. –