Метод duplicate для текстового фрейма
Метод duplicate для текстового фрейма нет так прост, как может показаться на первый взгляд. В своём активе он имеет два параметра и второй параметр имеет двоякое значение в зависимости от того, применяется или нет первый. Начинающим изучать программирование будет полезно ознакомиться с этим подробнее и на русском языке.
Итак,
Метод duplicate()
Синтаксис: dublicate(to, by);
Каждый из параметров может быть опущен, и оба параметра могут быть опущены одновременно. Первый параметр, «to«, обозначает место, куда будет копироваться фрейм. Это может быть разворот, страница, слой. Понимание параметра «by» немного сложнее. Он состоит из двух значений (массив), относящихся к координатам осей x и y. Это могут быть как числа, так и строки, которыми задаются координаты.
Возможны следующие варианты:
а) если параметр «to» указан, то параметром «by» задается расположение нового текстового фрейма относительно старого. То есть величины сдвига по горизонтали и по вертикали.
b) если параметр «to» опущен, параметр «by» задает абсолютные координаты x, y левого верхнего угла нового текстового фрейма.
Пример 1.
myDoc = app.documents.add(); // Создаем новый документ myPage = myDoc.pages[0]; // При создании нового документа всегда есть одна страница myTextFrame = myPage.textFrames.add(); // Добавляем на страницу текстовый фрейм myTextFrame.geometricBounds = [100,100,200,200]; // текстовый фрейм располагаем по координатам [Y1,X1,Y2,X2] myTextFrame.duplicate(); // Дублируем текстовый фрейм |
В этом примере оба параметра опущены, в результате будет создан новый текстовый фрейм на той же странице, такого же размера и расположенный по таким же координатам, как и исходный текстовый фрейм.
Пример 2.
myDoc = app.documents.add(); myPage = myDoc.pages[0]; myTextFrame = myPage.textFrames.add(); myTextFrame.geometricBounds = [100,100,200,200]; myTextFrame.duplicate([10,20]); |
В этом примере параметр «to» опущен, так что массивом [10,20] задаются координаты верхнего левого угла x, y, и его geometricBounds будут [20,10,120,110]. Новый текстовый фрейм будет располагаться на той же странице, что и исходный, так как параметр «to» не задан.
Пример 3.
myPage= app.documents.add().pages[0]; myTextFrame = myPage.textFrames.add(); myTextFrame.geometricBounds = [ 100,100,200,200] ; myTextFrame.duplicate( myPage, [10,20] ); |
В этом примере задан параметр «to«, это первая страница документа, значит числа второго параметра (те, что в квадратных скобках) будут задавать смещение нового текстового фрейма относительно исходного. Новыми координатами будет массив geometricBounds [120,110,220,210];
Пример 4.
myDoc = app.documents.add(); myPage = myDoc.pages[0]; myTextFrame = myPage.textFrames.add() myTextFrame.geometricBounds = [ 100,100,200,200] ; secondPage = myDoc.pages.add() ; myTextFrame.duplicate( secondPage ); |
В четвертом примере к документу добавляется ещё одна страница и в методе duplicate представлен только первый параметр, который указывает назначение копирования. Так как не указано местоположение текстового фрейма, то оно останется таким же, как и у исходного фрейма, т.е. geometricBounds = [100,100,200,200]. Но на второй странице.
Пример 5.
myDoc = app.documents.add(); myPage = myDoc.pages[0]; myTextFrame = myPage.textFrames.add(); myTextFrame.geometricBounds = [ 100,100,200,200] ; secondPage = myDoc.pages.add() ; myTextFrame.duplicate( secondPage, [10,20] ); |
Здесь задан параметр «пункт назначения» — secondPage (2-я страница документа), следовательно, вторым параметром метода duplicate задаётся смещение координат нового фрейма относительно исходного. И его geometricBounds будут… Впрочем сосчитайте сами и проверьте.
Последние комментарии