Пакет | flashx.textLayout.compose |
Класс | public class StandardFlowComposer |
Наследование | StandardFlowComposer FlowComposerBase Object |
Реализует | IFlowComposer |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Каждый вызов методов compose()
или updateAllControllers()
нормализует процесс обработки текста в качестве первого шага. При выполнении нормализованного процесса осуществляется проверка измененных частей объекта TextFlow и выполняются следующие действия:
- Удаляются пустые объекты FlowLeafElement и SubParagraphGroupElement.
- Объединяются диапазоны элементов одного уровня, имеющие идентичные атрибуты.
- Добавляется пустой абзац, если поток является пустым.
Для использования StandardFlowComposer следует присвоить его свойству flowComposer
объекта TextFlow. Выполните вызов метода updateAllControllers()
для размещения и отображения текста в контейнерах, присоединенных к компоновщику потока.
Примечание. Для простых статических текстовых потоков можно также использовать один из заводских классов текстовой строки. Эти классы фабрики обычно создают строки с меньшим количеством служебных данных, чем компоновщик потока, однако в этом случае редактирование, динамические изменения или взаимодействие с пользователем не поддерживаются.
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
composing : Boolean [только для чтения]
Значение true, если компоновщик потока в настоящее время выполняет операцию компоновки. | StandardFlowComposer | ||
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
damageAbsoluteStart : int [только для чтения]
Абсолютная позиция, непосредственно предшествующая первому элементу текстового потока, который требует компоновки и обновления. | FlowComposerBase | ||
numControllers : int [только для чтения]
Количество контейнеров, присвоенных этому экземпляру IFlowComposer. | StandardFlowComposer | ||
numLines : int [только для чтения]
Общее количество строк, созданных в потоке. | FlowComposerBase | ||
rootElement : ContainerFormattedElement [только для чтения]
Корневой элемент, связанный с данным экземпляром IFlowComposer. | StandardFlowComposer | ||
swfContext : ISWFContext
Экземпляр ISWFContext, используемый для создания, при необходимости, вызовов FTE. | FlowComposerBase | ||
textFlow : flashx.textLayout.elements:TextFlow [только для чтения]
Объект TextFlow, к которому присоединен этот компоновщик потока. | FlowComposerBase |
Метод | Определено | ||
---|---|---|---|
Создает объект StandardFlowComposer. | StandardFlowComposer | ||
Добавляет контроллер к этому экземпляру IFlowComposer. | StandardFlowComposer | ||
Добавляет контроллер к этому экземпляру IFlowComposer в указанной позиции индекса. | StandardFlowComposer | ||
Вычисляет количество строк, необходимое для отображения содержимого корневого элемента потока, и указывает позиции этих строк в контейнерах отображения потока. | StandardFlowComposer | ||
Выполняет компоновку содержимого корневого элемента, включая контейнер в указанной позиции индекса. | StandardFlowComposer | ||
Выполняет компоновку содержимого корневого элемента вплоть до указанной позиции. | StandardFlowComposer | ||
Пометить строки как поврежденные и требующие восстановления. | FlowComposerBase | ||
Возвращает индекс контроллера, включающего содержимое в указанной позиции. | StandardFlowComposer | ||
findLineAtPosition(absolutePosition:int, preferPrevious:Boolean = false):flashx.textLayout.compose:TextFlowLine
Возвращает объект TextFlowLine, включающий содержимое в указанной позиции. | FlowComposerBase | ||
Возвращает порядковый номер строки объекта TextFlowLine, который включает содержимое в указанной позиции. | FlowComposerBase | ||
Возвращает абсолютную позицию первого элемента содержимого указанного объекта ContainerController. | StandardFlowComposer | ||
Возвращает объект ContainerController в указанной позиции индекса. | StandardFlowComposer | ||
Возвращает индекс указанного объекта ContainerController. | StandardFlowComposer | ||
Возвращает строку с указанным номером. | FlowComposerBase | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Вызывается TextFlow при изменении диспетчера операций. | StandardFlowComposer | ||
Указывает, отмечены ли какие-либо объекты TextFlowLine между началом потока и строкой, включающей содержимое в указанной позиции, как поврежденные. | FlowComposerBase | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Удаляет все контроллеры из этого экземпляра IFlowComposer. | StandardFlowComposer | ||
Удаляет контроллер из этого экземпляра IFlowComposer. | StandardFlowComposer | ||
Удаляет контроллер в указанной позиции индекса из этого экземпляра IFlowComposer. | StandardFlowComposer | ||
Устанавливает фокус на контейнер, который содержит местоположение, указанное параметром absolutePosition. | StandardFlowComposer | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
StandardFlowComposer | |||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Выполняет компоновку содержимого корневого элемента и обновляет экран. | StandardFlowComposer | ||
Обновляет значения длины строк для поддержания отображения в TextFlow. | FlowComposerBase | ||
Выполняет компоновку и обновление отображения, включая контейнер в указанной позиции индекса. | StandardFlowComposer | ||
Возвращает элементарное значение заданного объекта. | Object |
Метод | Определено | ||
---|---|---|---|
Возвращает значение true, если компоновщик является необходимым, в противном случае возвращается значение false | StandardFlowComposer |
composing | свойство |
numControllers | свойство |
rootElement | свойство |
rootElement:ContainerFormattedElement
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Корневой элемент, связанный с данным экземпляром IFlowComposer.
Корневым элементом может быть только объект TextFlow.
Реализация
public function get rootElement():ContainerFormattedElement
StandardFlowComposer | () | Конструктор |
public function StandardFlowComposer()
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Создает объект StandardFlowComposer.
Для использования объекта StandardFlowComposer следует присвоить его свойству flowComposer
объекта TextFlow. Выполните вызов метода updateAllControllers()
для размещения и отображения текста в контейнерах, присоединенных к компоновщику потока.
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { import flashx.textLayout.elements.TextFlow; import flashx.textLayout.compose.StandardFlowComposer; public class StandardFlowComposer_constructor { public function createComposer(textFlow:TextFlow):void { textFlow.flowComposer = new StandardFlowComposer(); } } }
addController | () | метод |
public function addController(controller:ContainerController):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Добавляет контроллер к этому экземпляру IFlowComposer.
Контейнер добавляется в конец списка контейнеров.
Параметры
controller:ContainerController — Добавляемый объект ContainerController.
|
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { public class StandardFlowComposer_addController { import flash.display.Sprite; import flashx.textLayout.elements.TextFlow; import flashx.textLayout.container.ContainerController; public function setupController(textFlow:TextFlow):void { var container:Sprite = new Sprite(); var controller:ContainerController = new ContainerController( container, 400, 200 ); textFlow.flowComposer.addController( controller ); } } }
addControllerAt | () | метод |
public function addControllerAt(controller:ContainerController, index:int):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Добавляет контроллер к этому экземпляру IFlowComposer в указанной позиции индекса.
Список контроллеров формируется с нуля (первый контроллер имеет индекс 0).
Параметры
controller:ContainerController — Добавляемый объект ContainerController.
| |
index:int — Числовой индекс, указывающий позицию в списке контроллера для вставки объекта ContainerController.
|
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { public class StandardFlowComposer_addControllerAt { import flash.display.Sprite; import flashx.textLayout.elements.TextFlow; import flashx.textLayout.container.ContainerController; public function setupController(textFlow:TextFlow):void { var container:Sprite = new Sprite(); var controller:ContainerController = new ContainerController( container, 400, 200 ); textFlow.flowComposer.addControllerAt( controller, 0 ); } } }
compose | () | метод |
public function compose():Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Вычисляет количество строк, необходимое для отображения содержимого корневого элемента потока, и указывает позиции этих строк в контейнерах отображения потока.
Метод compose()
обеспечивает компоновку содержимого только в том случае, если оно изменилось с момента последней операции компоновки. Результаты сохраняются, таким образом, при последующих вызовах методов compose()
или updateAllControllers()
не требуется выполнять повторную компоновку, если содержимое потока не изменилось.
Если содержимое какого-либо из контейнеров изменилось, метод возвращает значение true
.
Boolean — true при изменении значения.
|
Связанные элементы API
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { public class StandardFlowComposer_compose { import flashx.textLayout.elements.TextFlow; public function compose(textFlow:TextFlow):void { textFlow.flowComposer.compose(); } } }
composeToController | () | метод |
public function composeToController(index:int):Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Выполняет компоновку содержимого корневого элемента, включая контейнер в указанной позиции индекса.
Если содержимое какого-либо из контейнеров, включая контейнер в указанной позиции индекса, изменилось, метод возвращает значение true
. Если index
превышает количество контроллеров (или он не указан), тогда выполняется компоновка всех контейнеров.
Параметры
index:int (default = NaN ) — Выполняется компоновка, по крайней мере, до этого контейнера в TextFlow. Если controllerIndex превышает количество контроллеров, компоновка выполняется до конца последнего контейнера.
|
Boolean — true при изменении значения.
|
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { public class StandardFlowComposer_composeToController { import flashx.textLayout.elements.TextFlow; public function compose(textFlow:TextFlow):void { textFlow.flowComposer.composeToController( 3 ); } } }
composeToPosition | () | метод |
public function composeToPosition(absolutePosition:int):Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Выполняет компоновку содержимого корневого элемента вплоть до указанной позиции.
Если содержимое какого-либо контейнера, включая контейнер, которому принадлежит содержимое в указанной позиции, изменилось, метод возвращает значение true
. Если absolutePosition
превышает длину TextFlow (или данные не указаны), тогда выполняется компоновка всего потока.
Параметры
absolutePosition:int (default = NaN ) — Выполняется компоновка, по крайней мере, до этой позиции в TextFlow. По умолчанию, или если absolutePosition находится за пределами конца потока, компоновка выполняется до конца потока.
|
Boolean — true при изменении значения.
|
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { public class StandardFlowComposer_composeToPosition { import flashx.textLayout.elements.TextFlow; public function compose(textFlow:TextFlow):void { textFlow.flowComposer.composeToPosition( 344 ); } } }
findControllerIndexAtPosition | () | метод |
public function findControllerIndexAtPosition(absolutePosition:int, preferPrevious:Boolean = false):int
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Возвращает индекс контроллера, включающего содержимое в указанной позиции.
Позиция может рассматриваться в качестве разделителя между двумя символами или другими элементами текстового потока. Если значение в absolutePosition
является позицией между последним символом одного контейнера и первым символом следующего, то в том случае, если параметр preferPrevious
имеет значение true
, возвращается предшествующий контейнер, а в том случае, если для параметра preferPrevious
установлено значение false
, возвращается последующий контейнер.
Этот метод возвращает значение -1, если содержимое в указанной позиции не содержится ни в одном из контейнеров или не принадлежит диапазону позиций в текстовом потоке.
Параметры
absolutePosition:int — Позиция содержимого, для которого обнаружен индекс контейнера.
| |
preferPrevious:Boolean (default = false ) — Указывает индекс контейнера для возврата, если позиция находится между последним элементом одного контейнера и первым элементом следующего.
|
int — Индекс контроллера контейнера, либо-1, если таковой не обнаружен.
|
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { import flashx.textLayout.elements.TextFlow; import flashx.textLayout.compose.StandardFlowComposer; public class StandardFlowComposer_findControllerIndexAtPosition { public function findControllerIndexAtPosition(textFlow:TextFlow):void { var index:int = textFlow.flowComposer.findControllerIndexAtPosition( 344 ); } } }
getAbsoluteStart | () | метод |
public function getAbsoluteStart(controller:ContainerController):int
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Возвращает абсолютную позицию первого элемента содержимого указанного объекта ContainerController.
Позиция вычисляется путем отсчета от разделителя между двумя символами или другими элементами текстового потока. Позиция, предшествующая первому элементу потока, является нулевой. Абсолютная позиция – это позиция, отсчитываемая от начала потока.
Параметры
controller:ContainerController — Объект ContainerController, связанный с этим композитором потока.
|
int — Позиция перед первым символом или графическим элементом в ContainerController.
|
getControllerAt | () | метод |
public function getControllerAt(index:int):ContainerController
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Возвращает объект ContainerController в указанной позиции индекса.
Параметры
index:int — Индекс возвращаемого объекта ContainerController.
|
ContainerController — Объект ContainerController в указанной позиции.
|
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { import flashx.textLayout.elements.TextFlow; import flashx.textLayout.container.ContainerController; public class StandardFlowComposer_getControllerAt { public function findControllerIndexAtPosition(textFlow:TextFlow):void { var controller:ContainerController = textFlow.flowComposer.getControllerAt( 0 ); } } }
getControllerIndex | () | метод |
public function getControllerIndex(controller:ContainerController):int
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Возвращает индекс указанного объекта ContainerController.
Параметры
controller:ContainerController — Ссылка на объект ContainerController, который требуется найти.
|
int — Индекс указанного объекта ContainerController, либо -1, если контроллер не присоединен к этому компоновщику потока.
|
Пример ( Использование этого примера )
package flashx.textLayout.compose.examples { import flashx.textLayout.elements.TextFlow; import flashx.textLayout.container.ContainerController; public class StandardFlowComposer_getControllerIndex { public function getControllerIndex(textFlow:TextFlow, controller:ContainerController):void { var index:int = textFlow.flowComposer.getControllerIndex( controller ); } } }
interactionManagerChanged | () | метод |
public function interactionManagerChanged(newInteractionManager:ISelectionManager):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Вызывается TextFlow при изменении диспетчера операций.
Эта функция вызывается автоматически. Как правило, вызывать этот метод в коде не требуется. Классы, расширяющие StandardFlowComposer, могут обновлять прослушиватели событий и другие свойства, зависящие от диспетчера операций.
Параметры
newInteractionManager:ISelectionManager — Новый экземпляр ISelectionManager.
|
preCompose | () | метод |
removeAllControllers | () | метод |
public function removeAllControllers():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Удаляет все контроллеры из этого экземпляра IFlowComposer.
removeController | () | метод |
public function removeController(controller:ContainerController):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Удаляет контроллер из этого экземпляра IFlowComposer.
Параметры
controller:ContainerController — Удаляемый экземпляр ContainerController.
|
removeControllerAt | () | метод |
setFocus | () | метод |
public function setFocus(absolutePosition:int, leanLeft:Boolean = false):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Устанавливает фокус на контейнер, который содержит местоположение, указанное параметром absolutePosition
.
StandardFlowComposer выполняет вызов метода setFocus()
объекта ContainerController, содержащего указанную текстовую позицию потока.
Параметры
absolutePosition:int — Указывает позицию в текстовом потоке контейнера, в которую должен быть передан фокус.
| |
leanLeft:Boolean (default = false ) — Если установлено значение true, и позиция находится перед первым символом в контейнере, фокус устанавливается на конец предыдущего контейнера.
|
Связанные элементы API
setRootElement | () | метод |
public function setRootElement(newRootElement:ContainerFormattedElement):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Параметры
newRootElement:ContainerFormattedElement |
updateAllControllers | () | метод |
public function updateAllControllers():Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Выполняет компоновку содержимого корневого элемента и обновляет экран.
Формирование макета текста включает две фазы: компоновку и отображение. На этапе компоновки компоновщик потока вычисляет количество строк, необходимое для отображения содержимого корневого элемента потока, а также позиции этих строк в контейнерах отображения потока. На этапе отображения компоновщик потока обновляет дочерние элементы экранных объектов в их контейнерах. Метод updateAllControllers()
обеспечивает последовательную инициацию обеих фаз. StandardFlowComposer отслеживает изменения содержимого в целях выполнения полного цикла компоновки и отображения в случае необходимости.
Этот метод позволяет выполнять немедленное синхронное обновление всех текстовых строк и списка отображения.
Если содержимое какого-либо из контейнеров изменилось, метод возвращает значение true
.
Boolean — true при изменении значения.
|
updateToController | () | метод |
public function updateToController(index:int):Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Выполняет компоновку и обновление отображения, включая контейнер в указанной позиции индекса.
Метод updateToController()
выполняет компоновку содержимого и обновляет отображение всех контейнеров, включая контейнер в указанной позиции индекса. Например, если имеется цепочка из 20 контейнеров, и указан индекс 10, метод updateToController()
обеспечивает компоновку и отображение первых десяти контейнеров (в позициях индекса от 0 до 9). В этой точке компоновка прекращается. Если controllerIndex
имеет значение -1 (или его значение не указано), то обновляются все контейнеры.
Этот метод позволяет выполнять немедленное синхронное обновление всех текстовых строк и списка отображения.
Если содержимое какого-либо из контейнеров изменилось, метод возвращает значение true
.
Параметры
index:int (default = NaN ) — Индекс последнего обновляемого контейнера (по умолчанию обновляются все контейнеры)
|
Boolean — true при изменении значения.
|
importToFlow()
объекта TextConverter.
package flashx.textLayout.compose.examples { import flash.display.Sprite; import flashx.textLayout.compose.StandardFlowComposer; import flashx.textLayout.container.ContainerController; import flashx.textLayout.conversion.TextConverter; import flashx.textLayout.elements.TextFlow; public class StandardFlowComposer_ClassExample extends Sprite { private var poem:String = "Sonnet 18\n" + "Shall I compare thee to a summer's day?\n" + "Thou art more lovely and more temperate:\n" + "Rough winds do shake the darling buds of May,\n" + "And summer's lease hath all too short a date:\n" + "Sometime too hot the eye of heaven shines,\n" + "And often is his gold complexion dimmed,\n" + "And every fair from fair sometime declines,\n" + "By chance, or nature's changing course untrimmed:\n" + "But thy eternal summer shall not fade,\n" + "Nor lose possession of that fair thou ow'st,\n" + "Nor shall death brag thou wand'rest in his shade,\n" + "When in eternal lines to time thou grow'st,\n" + "So long as men can breathe or eyes can see,\n" + "So long lives this, and this gives life to thee.\n" + "William Shakespeare\n"; private var flow:TextFlow; public function StandardFlowComposer_ClassExample() { var firstContainer:Sprite = new Sprite(); firstContainer.x = 180; firstContainer.y = 30; this.stage.addChild( firstContainer ); var secondContainer:Sprite = new Sprite(); secondContainer.x = 30; secondContainer.y = 130 this.stage.addChild( secondContainer ); var firstController:ContainerController = new ContainerController( firstContainer, 300, 100 ); var secondController:ContainerController = new ContainerController( secondContainer, 800, 600 ); flow = TextConverter.importToFlow( poem, TextConverter.PLAIN_TEXT_FORMAT ); flow.flowComposer = new StandardFlowComposer();; flow.flowComposer.addController( firstController ); flow.flowComposer.addController( secondController ); flow.flowComposer.updateAllControllers(); } } }
Tue Jun 12 2018, 11:34 AM Z