pageItem и его содержимое

  • Автор темы Автор темы Strizh
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Strizh

Топикстартер
15 лет на форуме
Сообщения
982
Реакции
92
Есть некий pageItem, известно, что это текстовый фрейм.
Как добраться до contents?
попытки
alert(myPageItem.textFrames.length) выдает 0!
Куда копать?
не предлагать выбирать из textFrames!
нужно именно из pageItems!
 
Ответ: pageItem и его содержимое

Стоп!
Если тебе известно, что myItem.constructor.name == 'TextFrame', то на фига тебе лезть в его .textFrames?
if (myItem.constructor.name == 'TextFrame') {
myContent = myItem.contents;
}
 
Ответ: pageItem и его содержимое

vbatushev сказал(а):
Стоп!
Если тебе известно, что myItem.constructor.name == 'TextFrame', то на фига тебе лезть в его .textFrames?
if (myItem.constructor.name == 'TextFrame') {
myContent = myItem.contents;
}

А вот и нет, у него constructor.name == 'PageItem'!!!
И опять идем в п. 1
app.activeDocument.selection[0].parent.pageItems.item("left_title").constructor.name
искомому объекту присвоен script_label = "left_title"
 
Ответ: pageItem и его содержимое

Я думаю, что надо действовать через try. Если это действительно TextFrame, то у него можно найти контент, а если такого свойства у объекта не случится, то это будет рассмотрено в catch. По крайней мере с картинками (я в текстах не специалист) такой номер канает.
 
Ответ: pageItem и его содержимое

AirGraph сказал(а):
Я думаю, что надо действовать через try. Если это действительно TextFrame, то у него можно найти контент, а если такого свойства у объекта не случится, то это будет рассмотрено в catch. По крайней мере с картинками (я в текстах не специалист) такой номер канает.
не есть хорошая идея...
он действительно textFrame, но найден через pageItems, как добраться до contents????
 
Ответ: pageItem и его содержимое

var workItem = pageItem; // это твой объект

try {

var workContents = workItem.contents; // это то, что ты ищешь

}

catch {

alert("workItem don't have a property CONTENTS!!! -> pageItem is not а textFrame!!!"); // это то, чего ты не нашел ;)))))

}

Ну и что тут не очень хорошего??? Загляни в текст моих скриптов. Там эта штука работает для поиска картинок в массиве PageItems как часы. Все объекты массива - PageItems, но среди них есть владеющие свойством images, picts и т.п. Именно так, как в твоем случае.

Удачи!

PS: Забыл сказать, что в силу недоопределенности синтаксиса (intype) JS не рекомендую писАть такие вот монстроидальные конструкции:

app.activeDocument.selection[0].parent.pageItems.item("left_title").constructor.name

Лично убедился, что компилятор их может понимать по-своему, а не по-твоему. Например два следующих куска кода:

JS_pathItem = app.activeDocument.pathItems[JS_indexI];
if(JS_pathItem.kind != PathKind.CLIPPINGPATH) ...

и

if(app.activeDocument.pathItems[JS_indexI].kind != PathKind.CLIPPINGPATH) ...

выполняются совершенно по-разному, хотя являют собой суть одно и то же! И правильно выполняется "более определенный" ;)))) первый вариант...
 
Ответ: pageItem и его содержимое

AirGraph сказал(а):
var workItem = pageItem; // это твой объект

try {

var workContents = workItem.contents; // это то, что ты ищешь

}

catch {

alert("workItem don't have a property CONTENTS!!! -> pageItem is not а textFrame!!!"); // это то, чего ты не нашел ;)))))
Ты меня недопонял.
Изначально, есть ТЕКСТОВЫЙ ФРЕЙМ, но я его ищу не как
myPage.textFrames.item("myLabel"), а как
myPage.pageItems.item("myLabel")

КАК ДОБРАТЬСЯ ДО contents у него?
Исключения не нужны...
нужно просто добраться до контента!

КАК?
 
Ответ: pageItem и его содержимое

Именно так, как я и написал. Перебираем в цикле все pageItems и получая каждый рассматриваем его в try как textFrame. Если это не textFrame - управление падает в catch { ; } т.е. попросту пропускаем этот pageItem. Если это textFrame, т.е. мы не вылетели из try при попытке получить его properties (имя или что угодно иное характерное именно ему), проверяем - это искомый textFrame, если да - вот его contents, если нет - крутим дальше внешний цикл. Что не нравится то?

Наверное мы с тобой одни уже это дело обсуждаем, так что может нам в почту уйти?

Удачи!
 
Ответ: pageItem и его содержимое

AirGraph сказал(а):
Наверное мы с тобой одни уже это дело обсуждаем, так что может нам в почту уйти?

Удачи!
дафай...
 
Статус
Закрыто для дальнейших ответов.