myTextFrame.paragraphs[0].insertionPoints[0].textFrames.add(); Предусмотрены три способа позиционирования заякоренного фрейма: inlinePosition, aboveLine и anchored- все они являются свойствами объекта AnchorPosition (ЛИСТИНГ 5.23).

Листинг 5.23. Установка типа якоря

mylnlineFrame.anchoredPosition = AnchorPosition.inlinePosition

Если выбран тип anchored, то для указания конкретного положения используют любую из 9 точек привязки (anchorPoint): topLeftAnchor, topCenterAn-chor, topRightAnchor, leftCenterAnchor, centerAnchor, right Cent erAnchor, bottomLeftAnchor, bottomCenterAnchor, bottomRightAnchor, которые, естественно, являются свойствами объекта AnchorPoint.

После вставки любого объекта во фрейм (ие обязательно заякоренного) необходимо провести обновление содержимого родителя, поскольку вставленный объект воздействует на все его элементы, приводя к их смещению. Для обновления информации о фрейме (эдакий принудительный refresh) предусмотрена операция recompose() (листинг 5.24). Ее лучше применять ко всему родительскому фрейму, а не только к текущему абзацу - в таком случае мы сможем всегда гарантировать корректный результат.

^Листинг 5.24.0бновл(гния информациио фрейме

myTextFrame.texts[0].recomposeO;

// Получаем габариты нового фрейма

var myBounds = mylnlineFrame.geometricBounds;

// Устанавливаем размеры - допустим, 50 мм по ширине и высоте mylnlineFrame.geometricBounds = [myBounds[0], myBounds[1], myBounds[0]+50, myBounds[1]+50];

//И вписьшаем текст

mylnlineFrame. contents = "Это - содержимое фрейма, вставленного в текст";

// Теперь создаем заякоренный фрейм - операция ничем не отличается // от создания обычного in-line-фрейма var myAnchoredFrame =

myTextFrame.paragraphs[1].insertionPoints[0].textFrames.add();

// Заякоренный фрейм отличается от in-line-варианта только тем,

// что имеет дополнительный параметр, определяющий его положение // на странице относительно точки вставки. Устанавливаем параметры // заякоренного объекта как свойства объекта anchoredObjectSettings: v/itn(myAnchoredFrame.anchoredObjectSettings) { anchoredPosition = AnchorPosition.anchored; anchorPoint = AnchorPoint.topLeftAnchor;

horizontalReferencePoint = AnchoredRelativeTo.anchorLocation; horizontalAlignment = HorizontalAlignment.leftAlign; anchorXoffset = 72;

verticalReferencePoint = VerticallyRelativeTo.lineBaseline; anchorYoffset = 24; anchorSpaceAbove = 24;

// Уже знакомые операции myTextFrame.texts[0].recompose; var myBounds = myAnchoredFrame.geometricBounds; myAnchoredFrame.geometricBounds = [myBounds[0], myBounds[1], ^ myBounds[0]+24, myBounds[1]+72]; myAnchoredFrame.contents = "А это - содержимое заякоренного фрейма";

}

5.12. Перемещение объектов

В редакторе предусмотрено несколько вариантов переноса объектов из одного места в другое: традиционный для обычной верстки - через системный буфер и путем непосредственного переноса в место назначения (аналог метода drag-and-drop).

Использовать системный буфер нежелательно- прибегать к нему нужно только в самых крайних случаях, поскольку эта операция более ресурсоемкая и медленная по сравнению с альтернативным вариантом. Перед занесением в буфер копируемый или переносимый фрагмент сначала нужно выделить (select о), выполнить необходимую операцию (арр. сору о), затем встать в место назначения (insertionPoint), после чего вставить из буфера (арр.paste ()).


⇐ вернуться назад | | далее ⇒