JS - методы (methods)

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

mihailo-v

Участник
Топикстартер
Сообщения
65
Реакции
0
Вот почитал всякие мануалы по скриптам, но осталось непонятным самое главное...

Например, добавляем объект:
app.activeDocument.textFrames.add();

Так что же представляет из себя команда add()? Ведь это не метод, а некая общая команда для добавления объекта в иерархию. Насколько я понимаю - то же самое и Select.
А какие еще подобные команды есть и как их грамотно использовать - нигде не нашел.
Кстати, иногда в команде add() в скобках прямо указываются properties для объекта и говорится, что при этом скрипт работает быстрее, чем если бы properties описывались по отдельности, так ли это на самом деле?

Михаил
 
Ответ: JS - методы (methods)

Объект TextFrames владеет методом add(). Если эти слова непонятны, вероятнее всего, надо почитать для начала книжки про концепции объектно-ориентированных языков (С++, JavaScript), после чего мануал по JavaScript, а не описание объектной модели InDesign.

AirGraph.
 
Ответ: JS - методы (methods)

Спасибо ragman. Я сейчас пишу под CS2.
Собственно хотелось бы посоветоваться как сделать конкретно следующую вещь: есть несколько фреймов (НЕ связанных) на одной странице и несколько на следующей. Нужно последний (в смысле расположения на странице) фрейм первой страницы переместить на следующую страницу причем чтобы там он стал первым по счету. Что то пока у меня ничего не вышло.
 
Ответ: JS - методы (methods)

mihailo-v сказал(а):
Собственно хотелось бы посоветоваться ...
Могу сказать только одно : "Тут вам не Word". Нет в ИД очередности расположения на странице. Есть только координаты. Соответственно алгоритм определения "последнего" фрейма необходимо придумывать самому. Можно перебрать все фреймы на странице и определять у них координаты (верхние или нижние) по Y. Наибольшие координаты будут искомыми. А уж куда вы найденый фрей будете перемещать это вообще отдельный разговор.
 
Ответ: JS - методы (methods)

Понял. Спасибо.
Вообще-то я хотел узнать как именно переместить объект с одной страницы на другую. Я думаю так: на второй странице создать объект, который повторял бы тот, который на первой, а старый удалить, только вот как это сделать?

И еще маленькие вопросы:
1.как можно получить номер текущей страницы
2.как можно выделить фрейм (как если бы я щелкнул мышой по нему)
 
Ответ: JS - методы (methods)

последний вопрос отпал - нашел Document.Select
 
Ответ: JS - методы (methods)

mihailo-v сказал(а):
Вообще-то я хотел узнать как именно переместить объект с одной страницы на другую...
Возьмем для примера TextFrame. Смотрим методы. Видим:
move
Moves the TextFrame to a new location. Note: Either the 'to' or ' by' parameter is required; if both parameters are defined, only the to value is used.
to: The new location of the TextFrame,in the format (x, y). Can accept: Array of 2 Units, Spread, Page or Layer. (Optional) (any)
by: The amount (in measurement units) to move the TextFrame relative to its current position, in the format (x, y). (Optional) (number)

mihailo-v сказал(а):
как можно получить номер текущей страницы
текущей относительно чего? отображения? выделения? редактирования?
 
Ответ: JS - методы (methods)

Ура! получилось перекинуть - тока он встал в начале координат, так и должно быть? Я написал
... textFrames.item(1).move(myDocument.pages.item(3), undefined);

Т.е. чтобы размножить один фрейм например на 10 страницах нужно 10 раз применить duplicate и move
А вот как я наивно полагал - создавать новый объект используя уже имеющийся никак нельзя? Я очень смутно помню приемы в ООП, но кажется что есть способы быстро наплодить экземпляры объектов...

Насчет номера страницы: относительно выделения либо положения курсора.

Еще раз спасибо!!!!

Михаил
 
Ответ: JS - методы (methods)

Используйте в параметрах метода duplicate не страницу, а разворот.
Тогда объект скопируется на то же самое место.
Разворот можно получить как свойство parent страницы.

То есть пишем
textFrames.item(1).move(myDocument.pages.item(3).parent, undefined)
 
Ответ: JS - методы (methods)

mihailo-v сказал(а):
Ура! получилось перекинуть - тока он встал в начале координат, так и должно быть? Я написал
... textFrames.item(1).move(myDocument.pages.item(3), undefined);

by: The amount (in measurement units) to move the TextFrame relative to its current position, in the format (x, y). (Optional) (number)

Попробуй вместо "undefined" задать относительные координаты (смещение) равные 0
Гдето так: textFrames.item(1).move(myDocument.pages.item(3), {0,0});
 
Ответ: JS - методы (methods)

MT сказал(а):
textFrames.item(1).move(myDocument.pages.item(3).parent, undefined)

Да, он втавляет на то же место разворота, но не странтицы. Хотя paste in place суть то же самое, так что пригодится, спасибо.

ragman сказал(а):
Гдето так: textFrames.item(1).move(myDocument.pages.item(3), {0,0});

А так вообще не переходит на указанную страницу, т.е. воспринимает просто как move([0,0]).
 
Статус
Закрыто для дальнейших ответов.