Обратиться к фрейму

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

jakomo

Участник
Топикстартер
Сообщения
32
Реакции
0
Народ, не въехал пока в объектную модель, учусь еще :)
Скажите, пожалуйста, как обратиться к последнему текстовому фрейму в цепочке Story, если курсор в тексте, т.е., к самой цепочке обращение как к родительской
 
Ответ: Обратиться к фрейму

Первое, что пришло в голову, но думаю, что можно проще...
PHP:
activeDocument.selection[0].parentStory.characters.lastItem().parentTextFrames[0]
 
Ответ: Обратиться к фрейму

ИМХО это неверно. Если последний символ в оверсете - получите еррору.

Правильно так:
Код:
activeDocument.selection[0].parentStory.textFrames.lastItem();
 
Ответ: Обратиться к фрейму

Ага точно, ошибся...
 
Ответ: Обратиться к фрейму

Однако, данный код выдает ошибку:
Код:
var myLastFrame = app.activeDocument.selection[0].parentStory.textFrames.lastItem();
var Lid = myLastFrame.id;
alert("Lid=" + Lid);
Что я делаю неправильно, подскажите , если можно
ps.: А этот работает
Код:
var myTextFrame = app.activeDocument.selection[0].parentTextFrames[0];
alert("myTextFrame =" + myTextFrame);
var mid = myTextFrame.id;
alert("mid=" + mid);
 
Ответ: Обратиться к фрейму

Не поверите. Только что попробовал. Работает:
Код:
var myLastFrame = app.activeDocument.selection[0].parentStory.textFrames.lastItem();
alert(myLastFrame);

Ошибка возникала в строке var Lid = myLastFrame.id; Почему - другой вопрос.
 
Ответ: Обратиться к фрейму

Specialist сказал(а):
Ошибка возникала в строке var Lid = myLastFrame.id; Почему - другой вопрос.
Почему?
Просветите, если сочтете возможным, человека с не техническим образованием (биофизик).
Очень хочу научиться скриптингу, сильно жизнь экономит!
 
Ответ: Обратиться к фрейму

jakomo сказал(а):
Почему?
Просветите, если сочтете возможным, человека с не техническим образованием (биофизик).
Очень хочу научиться скриптингу, сильно жизнь экономит!

Пока не знаю. :))))
'hmmm'
 
Ответ: Обратиться к фрейму

jakomo сказал(а):
Вы говорите об оплате Ваших усилий?

Вовсе нет. Я говорю о том, что пока я действительно не смог разобраться в чем проблема. Напоминает баг, если честно...


Не по теме:
Я не беру деньги за советы. Их трудно оценивать и им все равно никто не следует. Только за готовый к использованию код.
 
Ответ: Обратиться к фрейму

Specialist сказал(а):
Вовсе нет. Я говорю о том, что пока я действительно не смог разобраться в чем проблема. Напоминает баг, если честно...
Похоже на то

Не по теме:
Спасибо!
 
Ответ: Обратиться к фрейму

Вобшем, пытаюсь писать скрипт, в который будет корректно определять количество текста за оверсетом, при этом должна отсутствовать зависимость результата от положения курсора в текстовой цепочке из нескольких фреймов.
Для этого пытаюсь заставить программу обратиться к последнему фрейму в парентСтори, а не к тому, где на ходу ткнул курсором :)
Если делать ссылку на текущий фрейм, все работает, но результат вычислений увеличивается при удалении курсора от конца цепочки, что кажется не логичным
При попытке какого либо вышеупомянутого обращения к объекту, полученому через
var myLastFrame = app.activeDocument.selection[0].parentStory.textFrames.lastItem();
получается ошибка, создается интуитивное впечатление, что объект пустой!

PS.: Это не просьба написать весь код, просто поясняю свою проблему, непонятки бы разрулить, опыт в скриптинге = 0, пытаюсь наверстать
 
Ответ: Обратиться к фрейму

Задача описана если не некоретно, то как минимум неоднозначно. И все же насколько я понял требуется вычеслить последний фрэйм в цепочке , или как бы там ни было вместо
var myLastFrame = app.activeDocument.selection[0].parentStory.textFrames.lastItem();
лучше использовать
var myLastFrame = app.activeDocument.selection[0].endTextFrame;
но это если точно знаете, что выделен будет именно текстовый фрэйм в тцепочке.
Что касается определения объема текста в overflows - то сначала нужно, наверно определить имеется ли факт overflows на лицо, т.е. if ( true == tf.overflows ){ // значит фрэйм переполнен }. Если факт переполнения установлен - то самое время воспользоваться процедурой , описаной не так давно в теме, насколько я знаю вам же и созданой.
 
Ответ: Обратиться к фрейму

Sakharovich сказал(а):
лучше использовать
var myLastFrame = app.activeDocument.selection[0].endTextFrame;

Это свойство есть только у текстФрейма. А по условию задачи у нас текстовый курсор стоит в тексте. То есть selection[0] вернет не textFrame, а insertionPoint.
 
Ответ: Обратиться к фрейму

ну так ничего не стоит уточнить обьект
var myLastFrame = app.activeDocument.selection[0].parentTextFrames[0].endTextFrame;
 
Ответ: Обратиться к фрейму

Да, так лучче.
 
Ответ: Обратиться к фрейму

Ура! Получилось то, что ожидал!
Спасибо всем за помощь!!!
 
Статус
Закрыто для дальнейших ответов.