overset

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

jakomo

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

Предположу, что:
Кол-во символов = Индекс последнего символа в story - Индекс последнего символа в последнем фрейме.
Остальное аналогично...
 
Ответ: overset

Т.е. если расписать более подробным образом, то получить хфост стори не поместившийся в фрэймы можно так :
function overflowedFrameContent(frame)
{
var Res = frame.parentStory.characters.itemByRange(frame.characters[-1].index,frame.parentStory.characters[-1].index);
}
собственно все, Res.paragraphs.length - число параграфов и т.д.
 
Ответ: overset

Хотя нет, провести нормальный поиск по результату не получается, например если нужно знать сколько там параграфов определенного стиля. Res.parent и Res.parentStory - в результате дают обьект стори длинной 0, хотя с contents обратиться можно, правда только в первом случае. Подумал что можно это дело обойти если взяв string - Res.contents - и найти его в overFlowedFrame.parentStory ... но поиск выдает ошибку ( . нада будет подумать, сам как раз сижу над проблемой определения хвоста стори .
 
Ответ: overset

Вот поростой скрипт написаный кем-то из форумчан (не помню чесслово). Посмотрите. Вполне рабочий и достаточный для меня. Автору спасибо.
 

Вложения

Ответ: overset

К сожалению этот скрипт просто определяет фрэйм в котором имеется overflow и просто выделяет его, а хотелось бы получить ту чаксть стори которая не поместилась в фрэме, причем не просто получить а еще и иметь возможность работать с объектом ...
 
Ответ: overset

Спасибо всем за ответы, может, еще есть варианты более функциональные?
 
Ответ: overset

Sakharovich сказал(а):
а еще и иметь возможность работать с объектом ...
скрипт выделит вам фрейм в котором оверсет, потом жмите Ctrl+Y (Story Editor), там красной полоской будет выделен оверсет - работайте.
 
Ответ: overset

Прошу прощения, моя вина, должен уточнить что говоря "РАБОТАТЬ" - имею ввиду, и думаю автор говорит о том же, работать в скрипте - определять содержимое - количество параграфов , слов, символов, их тип , если нужно производить поиск по этому хвосту, опять таки средтсвами не ctrl+f, a someObject.search(); :) проблема как раз в этом - непонятно как именно работать с объектом который является не всей , а только частью стори ... причем при попытке обращаться к некоторым, вполнесправедливм свойствам - выскакивают ошибки. Не буду пока вдаваться в подробности, в качестве примера приведу вариант когда в хвосте пытаюсь произвести поиск параграфа определенног остиля - получаю результатов на 1 больше реальной ситуации , но с этом я разрулил, почему что в хвост попадает последний чар в стори - а это символ перевода строки, так вот из всех результатов обратиться к содержимому можно только к самому первому , и все, причему его contents = "" :( , а остальные - пишет что их нет, хотя length = 7(например). В общем я тут колупаюсь - как только что то выясню - отпишусь.
 
Ответ: overset

*Yoppy!!!* Получилось, итак - все таки правельно сработало, ошибка была в том что я в коде который предложил выше в Res - попадал один символ из фрэйма . Эт уже неважно окончательная функция такова :

function overflowedFrameContent(frame)
{
var Res = frame.parentStory.characters.itemByRange((frame.characters[-1].index)+1,frame.parentStory.characters[-1].index);
};// function overflowedFrameContent(frame)
Прошу обратить внимание на индекс начала выбираемого подмножества cyaracters :(frame.characters[-1].index)+1 - мы берем индекс на ед больше чем последний в фрэйме, т.е. при условии что frame.owerflows - означает что след индекс существует и он уже вне фрэйма.А дальше как по маслу определили начальный индекс - конечный это последний символ всей стори. Наш результат эо charcter. Этого пока понять не могу, почему например не characters. Для того что бы узнать сколько у нас там параграфов - просто пришем Res.texts[0].paragraphs.length, ну и так далее, поиск тоже нужно производить не в Res, а в Res.texts[0].search();
 
Ответ: overset

а если во фрейме начало абзаца, а остаток находится в "overflow"? что там с кол-вом параграфов? :)
 
Ответ: overset

Увеличивается на один. Например story состоит из 6 абзацев, три из которых в frame и три в owerflow. Если последний обзац в frame увеличивать пока он не разделится на 2 линии , одна из которых уйдет в overflow - то получается что остаток содержит 4 абзаца, а фрэйм по прежнему только три. Все потому что когда мы обращаемся к свойству paragraphs - получаем не абзацы, а ссылки на них, т.е. в нашем примере выходит, что абзац один, а ссылки на него две. В story количество параграфов сохраняется все равно.
Отловить такую ситуацию не представляется сложным - линии параграфа которых нет во фрэйме не имеют parentTextFrames[0], тогда как те что попадают в фрэйм - возвращяют на него ссылку без проблем.
 
Ответ: overset

Sakharovich сказал(а):
Отловить такую ситуацию не представляется сложным - линии параграфа которых нет во фрэйме не имеют parentTextFrames[0], тогда как те что попадают в фрэйм - возвращяют на него ссылку без проблем.

Проверяйте Line.parent.constructor.name если это textFrame значит во фрейме, а если Story, значит в оверсете. Чего уж там... ;)
 
Ответ: overset

Всем спасибо за дельнье советы!
 
Статус
Закрыто для дальнейших ответов.