Пакетflash.text.engine
Классpublic final class TextBlock
НаследованиеTextBlock Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Класс TextBlock является базовым для создания объектов TextLine, которые можно визуализировать, добавляя в список отображения.

Класс TextBlock должен содержать один абзац, так как алгоритмы двунаправленности и разрывов строк в Юникод одновременно могут обрабатывать один абзац. Для приложений, создающих несколько абзацев текста, используйте язык разметки или анализ текста, чтобы разбить текст на абзацы и создать для каждого из них объект TextBlock.

Объект TextBlock сохраняет свое содержимое в свойстве content, которое является экземпляром класса ContentElement. Так как нельзя создать экземпляр класса ContentElement, задайте для content экземпляр одного из его подклассов: TextElement, GraphicElement или GroupElement. Используйте TextElement для чисто текстового содержимого, GraphicElement для изображений или графического содержимого и GroupElement для содержимого, в котором сочетаются объекты TextElement, GraphicElement и другие объект GroupElement. Подробные сведения об управлении форматированными фрагментами текста, встроенными фрагментами и графическими элементами см. описание класса ContentElement.

Создав экземпляр TextBlock и настроив его свойство content, вызовите метод createTextLine(), чтобы создать строки текста, являющиеся экземплярами класса TextLine.

Посмотреть примеры

См. также

ContentElement
GraphicElement
GroupElement
TextBaseline
TextElement
TextJustifier
TextLine
TextRotation
TabStop


Общедоступные свойства
 СвойствоОпределено
  applyNonLinearFontScaling : Boolean
Указывает, что требуется улучшить внешний вид экрана за счет качества печати WYSIWYG ("получаешь то, что видишь").
TextBlock
  baselineFontDescription : FontDescription
Шрифт, который используется для определения базовых линий для всех строк, созданных из блока, независимо от их содержимого.
TextBlock
  baselineFontSize : Number
Размер шрифта, который используется для вычисления базовых линий для строк, создаваемых из блока.
TextBlock
  baselineZero : String
Задает, какая базовая линия находится в точке с координатой у=0 для строк, созданных из этого блока.
TextBlock
  bidiLevel : int
Задает уровень двунаправленной вложенности текста в блоке по умолчанию.
TextBlock
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  content : ContentElement
Хранит содержимое текстового блока.
TextBlock
  firstInvalidLine : TextLine
[только для чтения] Указывает первую строку в текстовом блоке, в котором значение свойства TextLine.validity не равно TextLineValidity.VALID.
TextBlock
  firstLine : TextLine
[только для чтения] Первый объект TextLine в TextBlock, если такой имеется.
TextBlock
  lastLine : TextLine
[только для чтения] Последний объект TextLine в TextBlock, если такой имеется.
TextBlock
  lineRotation : String
Поворачивает строки в текстовом блоке как единое целое.
TextBlock
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
  tabStops : Vector
Задает позиции табуляции для текста в блоке в виде Vector объектов TabStop.
TextBlock
  textJustifier : TextJustifier
Задает TextJustifier для использования при создании строки.
TextBlock
  textLineCreationResult : String
[только для чтения] Показывает результат операции createTextLine().
TextBlock
  userData : *
Дает возможность автору связать произвольные данные с текстовым блоком.
TextBlock
Общедоступные методы
 МетодОпределено
  
TextBlock(content:ContentElement = null, tabStops:Vector = null, textJustifier:TextJustifier = null, lineRotation:String = "rotate0", baselineZero:String = "roman", bidiLevel:int = 0, applyNonLinearFontScaling:Boolean = true, baselineFontDescription:FontDescription = null, baselineFontSize:Number = 12.0)
Создает объект TextBlock
TextBlock
  
createTextLine(previousLine:TextLine = null, width:Number = 1000000, lineOffset:Number = 0.0, fitSomething:Boolean = false):TextLine
Предписывает текстовому блоку создать строку текста из своего содержимого, которая бы начиналась в точке, заданной параметром previousLine, и заканчивалась в точке, заданной параметром width.
TextBlock
  
Выдает базовое содержимое TextBlock в виде строки XML.
TextBlock
  
findNextAtomBoundary(afterCharIndex:int):int
Находит индекс следующей границы атома для заданного индекса символа, исключая символ по заданному индексу.
TextBlock
  
findNextWordBoundary(afterCharIndex:int):int
Находит индекс следующей границы слова от указанного индекса символа, исключая символ по заданному индексу.
TextBlock
  
Находит индекс предыдущей границы атома для указанного индекса символа, исключая символ по указанному индексу.
TextBlock
  
Находит индекс предыдущей границы слова для указанного индекса символа, исключая символ по указанному индексу.
TextBlock
  
Возвращает элемент TextLine, содержащий символ, заданный параметром charIndex.
TextBlock
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
  
releaseLines(firstLine:TextLine, lastLine:TextLine):void
Удаляет диапазон текстовых строк из списка строк, поддерживаемых текстовым блоком TextBlock.
TextBlock
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве
applyNonLinearFontScalingсвойство
applyNonLinearFontScaling:Boolean  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Указывает, что требуется улучшить внешний вид экрана за счет качества печати WYSIWYG ("получаешь то, что видишь"). Для платформ и шрифтов, поддерживающих нелинейное масштабирование, это свойство в значении true позволяет использовать эти показатели отчасти за счет качества печати WYSIWYG, особенно для малых размеров кегля.

Значение по умолчанию — true.


Реализация
    public function get applyNonLinearFontScaling():Boolean
    public function set applyNonLinearFontScaling(value:Boolean):void
baselineFontDescriptionсвойство 
baselineFontDescription:FontDescription  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Шрифт, который используется для определения базовых линий для всех строк, созданных из блока, независимо от их содержимого. Базовые линии зависят от шрифта и его размера.

Значение по умолчанию — null. Когда шрифт базовой линии имеет значение null, размер шрифта базовой линии игнорируется, а базовая линия отдельно взятой строки определяется на основе шрифта и размера самого крупного текста в строке. Если заданы и baselineFontDescription и baselineFontSize, эти свойства определяют базовые линии для всех строк в текстовом блоке, независимо от их содержимого. Такая комбинация чаще всего используется в восточно-азиатской типографике.


Реализация
    public function get baselineFontDescription():FontDescription
    public function set baselineFontDescription(value:FontDescription):void

См. также

baselineFontSizeсвойство 
baselineFontSize:Number  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Размер шрифта, который используется для вычисления базовых линий для строк, создаваемых из блока. Базовые линии зависят от шрифта и его размера.

Значение по умолчанию — 12. Когда шрифт базовой линии имеет значение null, размер шрифта базовой линии игнорируется, а базовая линия отдельно взятой строки определяется на основе шрифта и размера самого крупного текста в строке.


Реализация
    public function get baselineFontSize():Number
    public function set baselineFontSize(value:Number):void

Выдает
ArgumentError — Заданный baselineFontSize меньше 0.

См. также

baselineZeroсвойство 
baselineZero:String  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Задает, какая базовая линия находится в точке с координатой у=0 для строк, созданных из этого блока. Действительные значения для этого свойства находятся в членах класса TextBaseline.

Значение по умолчанию — TextBaseline.ROMAN.

В качестве значений этого свойства используйте следующие строковые значения:

Строковое значениеОписание
TextBaseline.ROMANЛатинская базовая линия строк имеет координату у=0.
TextBaseline.ASCENTНадстрочная базовая линия строк имеет координату у=0.
TextBaseline.DESCENTПодстрочная базовая линия строк имеет координату у=0.
TextBaseline.IDEOGRAPHIC_TOPИдеографическая верхняя базовая линия строк имеет координату у=0.
TextBaseline.IDEOGRAPHIC_CENTERИдеографическая центральная базовая линия строк имеет координату у=0.
TextBaseline.IDEOGRAPHIC_BOTTOMИдеографическая нижняя базовая линия строк имеет координату у=0.


Реализация
    public function get baselineZero():String
    public function set baselineZero(value:String):void

Выдает
ArgumentError — Если задано значение, не являющееся членом TextBaseline.

См. также

bidiLevelсвойство 
bidiLevel:int  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Задает уровень двунаправленной вложенности текста в блоке по умолчанию. Четное число означает направление слева направо, а нечетное — справа налево. Можно увеличить значение bidiLevel, чтобы указать количество уровней вложенности того или иного текста с точки зрения направления слева направо и справа налево.

Значение по умолчанию 0.

При модификации bidiLevel валидность всех разбитых ранее строк меняется на TextLineValidity.INVALID. После изменения bidiLevel свойство firstInvalidLine имеет то же значение, что и firstLine, и в объекте TextBlock необходимо повторно разбивать все строки.


Реализация
    public function get bidiLevel():int
    public function set bidiLevel(value:int):void

Выдает
ArgumentError — Если задано значение меньше 0.

Пример
В этом примере показан та же текстовая строка (логический порядок: a, b, c, alef, bet, gimel) визуализирована сначала с четным значением bidiLevel, а потом с нечетным значением bidiLevel.

package {
    
    import flash.display.Sprite;
    import flash.text.engine.TextBlock;
    import flash.text.engine.TextElement;
    import flash.text.engine.TextLine;
    import flash.text.engine.ElementFormat;
    import flash.text.engine.FontDescription;
    
    public class TextBlock_bidiLevelExample extends Sprite {
        
        public function TextBlock_bidiLevelExample():void {             
            var fontSize:Number = 36;

            var format:ElementFormat = new ElementFormat();        
            format.fontDescription = new FontDescription("Adobe Hebrew");
            format.fontSize = fontSize;
            var y:Number = 0;
            var leading:Number = fontSize * 0.2;
            var text:String = "abc" + String.fromCharCode(0x05D0, 0x05D1, 0x05D2);

            var textBlock:TextBlock = new TextBlock();
            textBlock.content = new TextElement(text, format);
                        
            // bidiLevel even
            textBlock.bidiLevel = 0;
            var textLine = textBlock.createTextLine(null, 400);
            y += leading + textLine.ascent;
            textLine.y = y;
            y += textLine.descent;
            addChild(textLine);      
            
            // bidiLevel odd
            textBlock.content = new TextElement(text, format);
            textBlock.bidiLevel = 1;
            textLine = textBlock.createTextLine(null, 400);
            y += leading + textLine.ascent;          
            textLine.y = y;
            addChild(textLine);   
        }
    }
}
contentсвойство 
content:ContentElement  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Хранит содержимое текстового блока. Так как ContentElement является базовым классом, назначьте для content экземпляр подкласса ContentElement: TextElement, GraphicElement или GroupElement. TextElement содержит объект String, GraphicElement содержит объект DisplayObject, а GroupElement содержит объект Vector, включающий один или несколько объектов TextElement, GraphicElement или других объектов GroupElement. Используйте TextElement для абзаца однородного текста, GraphicElement для графики, а GroupElement для комбинации текстовых и графических элементов или нескольких экземпляров этих элементов, а также для других объектов GroupElement.

Значение по умолчанию — null.

Модификация свойства contentприводит к изменению валидности всех созданных ранее строк на TextLineValidity.INVALID. После изменения content свойство firstInvalidLine имеет то же значение, что и firstLine, и в объекте TextBlock необходимо повторно разбивать все строки.


Реализация
    public function get content():ContentElement
    public function set content(value:ContentElement):void

Выдает
ArgumentError — Если задано значение, не являющееся известным подклассом ContentElement.
 
ArgumentError — Заданное значение value уже является членом группы.

См. также

firstInvalidLineсвойство 
firstInvalidLine:TextLine  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Указывает первую строку в текстовом блоке, в котором значение свойства TextLine.validity не равно TextLineValidity.VALID.

Значение по умолчанию — null.


Реализация
    public function get firstInvalidLine():TextLine

См. также

firstLineсвойство 
firstLine:TextLine  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Первый объект TextLine в TextBlock, если такой имеется.

Значение по умолчанию — null.


Реализация
    public function get firstLine():TextLine

См. также

lastLineсвойство 
lastLine:TextLine  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Последний объект TextLine в TextBlock, если такой имеется.

Значение по умолчанию — null.


Реализация
    public function get lastLine():TextLine

См. также

lineRotationсвойство 
lineRotation:String  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Поворачивает строки в текстовом блоке как единое целое. Вызовите метод createTextLine() после настройки lineRotation, иначе он не будет иметь силы. Значение по умолчанию равно TextRotation.ROTATE_0.

Конечный поворот любого глифа зависит от значений ElementFormat.textRotation, ContentElement.textRotation и TextBlock.lineRotation.

TextBlock.lineRotation обычно используется для восточно-азиатского текста. Чтобы создать абзац вертикального японского текста, выполните следующие действия.

  1. Задайте свойству TextBlock.lineRotation значение TextRotation.ROTATE_90.
  2. Оставьте для свойства ElementFormat.textRotation содержимого значение по умолчанию, TextRotation.AUTO.

Используйте следующие константы, определенные в классе TextRotation, чтобы задать значение для этого свойства.

Строковое значениеОписание
TextRotation.ROTATE_0Строки не поворачиваются.
TextRotation.ROTATE_90Строки поворачиваются на 90 градусов по часовой стрелке.
TextRotation.ROTATE_180Строки поворачиваются на 180 градусов.
TextRotation.ROTATE_270Строки поворачиваются на 270 градусов по часовой стрелке.
TextRotation.AUTOНе поддерживается.


Реализация
    public function get lineRotation():String
    public function set lineRotation(value:String):void

Выдает
ArgumentError — Если задано значение, не являющееся членом TextRotation.
 
ArgumentError — Если задано значение TextRotation.AUTO.

См. также


Пример
В этом примере в TextBlock добавляется японский текст, и свойству lineRotation задается значение TextRotation.ROTATE_90 для вертикального отображения строки.

package {
    import flash.display.Sprite;
    import flash.text.engine.FontDescription;
    import flash.text.engine.TextBlock;
    import flash.text.engine.TextElement;
    import flash.text.engine.TextLine;
    import flash.text.engine.TextRotation;
    import flash.text.engine.ElementFormat;
    
    public class TextBlock_lineRotationExample extends Sprite {
        
        public function TextBlock_lineRotationExample():void {
            var Japanese:String = String.fromCharCode(
                0x5185, 0x95A3, 0x5E9C, 0x304C, 0x300C, 0x653F, 0x5E9C, 0x30A4,
                0x30F3, 0x30BF, 0x30FC, 0x30CD, 0x30C3, 0x30C8, 0x30C6, 0x30EC, 
                0x30D3, 0x300D, 0x306E, 0x52D5, 0x753B, 0x914D, 0x4FE1, 0x5411, 
                0x3051, 0x306B, 0x30A2, 0x30C9, 0x30D3, 0x30B7, 0x30B9, 0x30C6, 
                0x30E0, 0x30BA, 0x793E, 0x306E
            ) +
            "FMS 2" +
            String.fromCharCode(0x3092, 0x63A1, 0x7528, 0x3059, 0x308B, 0x3068, 
                0x767a, 0x8868, 0x3057, 0x307e, 0x3057, 0x305F, 0x3002);

            var fontDescription:FontDescription = new FontDescription("MS Mincho");
            var format:ElementFormat = new ElementFormat();
            format.fontSize = 15;
            format.fontDescription = fontDescription;
                        
            var textElement:TextElement = new TextElement(Japanese, format); 
            var textBlock:TextBlock = new TextBlock();
            textBlock.content = textElement;
            textBlock.lineRotation = TextRotation.ROTATE_90;

            var linePosition:Number = this.stage.stageWidth - 120;
            var previousLine:TextLine = null;
        
            while (true) {
                var textLine:TextLine = textBlock.createTextLine(
                    previousLine, 
                    300);
                if (textLine == null) 
                    break;
                textLine.y = 30;    
                textLine.x = linePosition;
                linePosition -= 24;
                addChild(textLine);                
                previousLine = textLine;
            }        
        }
    }
}
tabStopsсвойство 
tabStops:Vector  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Задает позиции табуляции для текста в блоке в виде Vector объектов TabStop.

Значение по умолчанию — null, то есть, позиции табуляции выключены. Когда позиции табуляции не заданы, символ табуляции (\t) вызывает создание новой строки.

В результате модификации содержимого Vector объектов tabStop текстовый процессор не помечает содержимое текстового блока как недействительное. Однако, если задать Vector объектов tabStop это происходит.


Реализация
    public function get tabStops():Vector
    public function set tabStops(value:Vector):void

Выдает
ArgumentError — Заданный tabStops содержит null элементов.
 
ArgumentError — Заданные tabStops не отсортированы по возрастанию позиции.

См. также

textJustifierсвойство 
textJustifier:TextJustifier  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Задает TextJustifier для использования при создании строки.

Значением по умолчанию является объект TextJustifier, созданный по умолчанию.


Реализация
    public function get textJustifier():TextJustifier
    public function set textJustifier(value:TextJustifier):void

Выдает
ArgumentError — Если задано значение, не являющееся известным подклассом TextJustifier.

См. также

textLineCreationResultсвойство 
textLineCreationResult:String  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Показывает результат операции createTextLine(). Изменение содержимого в блоке приводит к тому, что сделанные ранее разрывы строк становятся недействительными, а значение свойства сбрасывается на null.

Значение по умолчанию — null.

Значениями этого свойства являются члены класса TextLineCreationResult

Строковое значениеОписание
TextLineCreationResult.SUCCESSРазрыв строки выполнен успешно.
TextLineCreationResult.COMPLETEЛибо вновь созданная строка идеально выровнялась со следующими строками, валидность которых сменилась с POSSIBLY_INVALID на VALID, либо строка не была создана, так как весь текст в блоке уже разбит на строки.
TextLineCreationResult.INSUFFICIENT_WIDTHСтрока не создана, так как не обнаружен текст, подходящий для заданной ширины.


Реализация
    public function get textLineCreationResult():String

См. также

userDataсвойство 
public var userData:*

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Дает возможность автору связать произвольные данные с текстовым блоком. Данные могут быть информацией, ссылающейся на содержимое, такое как дата редакции или имя автора, или могут быть кэшированными данными, используемыми при обработке.

Сведения о конструкторе
TextBlock()Конструктор
public function TextBlock(content:ContentElement = null, tabStops:Vector = null, textJustifier:TextJustifier = null, lineRotation:String = "rotate0", baselineZero:String = "roman", bidiLevel:int = 0, applyNonLinearFontScaling:Boolean = true, baselineFontDescription:FontDescription = null, baselineFontSize:Number = 12.0)

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Создает объект TextBlock

Параметры
content:ContentElement (default = null) — Содержимое текстового блока.
 
tabStops:Vector (default = null) — Отступы для текста в блоке.
 
textJustifier:TextJustifier (default = null) — Объект TextJustifier для использования в этом блоке при создании строки. Средство расстановки переносов отсутствует, будет создано средство по умолчанию на основе английского языка.
 
lineRotation:String (default = "rotate0") — Вращение, примененное к текстовым строкам, созданным из текстового блока в виде единиц.
 
baselineZero:String (default = "roman") — Указывает, какая базовая строка находит в точке y=0 для всех строк блока.
 
bidiLevel:int (default = 0) — Уровень двусторонней вложенности текста в блоке по умолчанию.
 
applyNonLinearFontScaling:Boolean (default = true) — Указывает, что необходимо улучшить внешний вид экрана за счет качества печати визуального редактора.
 
baselineFontDescription:FontDescription (default = null) — Задает описание шрифта, из которого нужно выводить базовые строки для всех строк блока.
 
baselineFontSize:Number (default = 12.0) — Задает размер для использования с baselineFontDescription. Этот параметр игнорируется, если baselineFontDescription равно null.

Выдает
ArgumentError — Заданный content не является известным подклассом ContentElement.
 
ArgumentError — Заданный content уже является членом группы.
 
ArgumentError — Заданная локаль lineRotation не является членом TextRotationм.
 
ArgumentError — Заданная локаль baselineZero не является членом TextBaseline.
 
ArgumentError — Заданный bidiLevel меньше 0.
 
ArgumentError — Заданный tabStops содержит null элементов.
 
ArgumentError — Заданные tabStops не отсортированы по возрастанию позиции.
 
ArgumentError — Заданный baselineFontSize меньше 0.

См. также

Сведения о методе
createTextLine()метод
public function createTextLine(previousLine:TextLine = null, width:Number = 1000000, lineOffset:Number = 0.0, fitSomething:Boolean = false):TextLine

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Предписывает текстовому блоку создать строку текста из своего содержимого, которая бы начиналась в точке, заданной параметром previousLine, и заканчивалась в точке, заданной параметром width. Текстовая строка — это объект TextLine, который можно добавить к списку отображения.

Разрыв строк в диапазоне текста в блоке, который уже разорван, может привести к изменению валидности строк в диапазоне разрыва и после него. Состояние строк может меняться с VALID на INVALID или POSSIBLY_INVALID. Если заново разорванная строка выравнивается с ранее разорванной строкой с состоянием POSSIBLY_INVALID, ранее разорванная строка и все последующие с состоянием POSSIBLY_INVALID снова меняют состояние на VALID. Валидность строк, значения которых не являются членами класса TextLineValidity не изменяются на VALID, но могут измениться на INVALID. Проверьте свойство firstInvalidLine после внесения любых изменений в текстовый блок, чтобы увидеть, где начинается или возобновляется разрыв строк.

Можно создать искусственные разрывы слов, включив в текст нулевой пробел Unicode (ZWSP). Это может быть полезно для таких языков, как тайский, где для правильного разрыва строк требуется словарь. В проигрыватель Flash Player не встроен такой словарь.

Параметры

previousLine:TextLine (default = null) — Указывает на ранее короткую строку, которой закрывается абзац. Может быть null, если первая строка короткая.
 
width:Number (default = 1000000) — Задает желаемую ширину строки в пикселах. Реальная ширина может быть меньше.
 
lineOffset:Number (default = 0.0) — Необязательный параметр, задающий разницу в пикселах между началом линии и отступом. Он может использоваться, если строки не выровнены, но при этом необходимо выровнять их отступы. Значение этого параметра по умолчанию 0,0.
 
fitSomething:Boolean (default = false) — Необязательный параметр, который предписывает проигрывателю Flash Player вместить хотя бы один символ в текстовую строку вне зависимости от того, какая задана ширина (даже если она равна нулю или отрицательна, что в остальных случаях приводит к исключению).

Возвращает
TextLine — Текстовая строка или null, если текстовый блок пуст или его ширина меньше ширины текстового элемента. Для различения этих случаев проверьте свойство textLineCreationResult текстового блока.

Выдает
ArgumentError — Если элемент TextLine, заданный параметром previousLine, недействителен.
 
ArgumentError — Если ширина меньше нуля, кроме случаев, когда fitSomething равно true.
 
ArgumentError — Если значение width больше, чем TextLine.MAX_LINE_WIDTH.
 
IllegalOperationError — Если один или несколько элементов содержимого текстового блока равны null ElementFormat.

См. также


Пример

В примере показано, как вызывать метод createTextLine() для создания текстовых строк в текстовом блоке. Проигрыватель выполняет для этого следующие действия:
  • создает элемент TextElement из строки и задает для него размер шрифта 20;
  • создает объект TextBlock и назначает ему TextBlock;
  • вызывает метод createTextLine(), чтобы создать строки шириной 300 пикселов из текстового блока;
  • помещает каждую строку в рабочую область (addChild()) и задает положение (x и y).

package {
    import flash.display.Sprite;
    import flash.text.engine.TextBlock;
    import flash.text.engine.TextElement;
    import flash.text.engine.TextLine;
    import flash.text.engine.ElementFormat;
    import flash.text.engine.FontDescription;
    
    public class TextBlock_createTextLineExample extends Sprite {
        
        public function TextBlock_createTextLineExample():void {
            
            var str:String = "I am a TextElement, created from a String and assigned " +
            "to the content property of a TextBlock. The createTextLine() method " +
            "then created these lines, 300 pixels wide, for display." ;
            
            var fontDescription:FontDescription = new FontDescription("Arial");
            var format:ElementFormat = new ElementFormat(fontDescription);
            format.fontSize = 16;
            var textElement:TextElement = new TextElement(str, format); 
            var textBlock:TextBlock = new TextBlock();
            textBlock.content = textElement; 
            createLines(textBlock); 
        }
        
        private function createLines(textBlock:TextBlock):void 
        {            
            var lineWidth:Number = 300;
            var xPos:Number = 15.0;
            var yPos:Number = 20.0;
            
            var textLine:TextLine = textBlock.createTextLine (null, lineWidth);
            while (textLine)
            {
                textLine.x = xPos;
                textLine.y = yPos;
                yPos += textLine.height + 2;
                addChild (textLine);
                textLine = textBlock.createTextLine (textLine, lineWidth);
            }
        }
    }
}
dump()метод 
public function dump():String

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Выдает базовое содержимое TextBlock в виде строки XML. Это может пригодиться при автоматическом тестировании, т.к. включает сведения о тексте, формате и визуализации. Опция доступна только в отладчике Flash Player.

Примечание. Содержимое и формат вывода могут измениться в будущем. Adobe не гарантирует обратной совместимости данного метода.

В следующей таблице показаны выходные данные:

ТегАтрибутОписание
<block> TextBlock
<line TextLine
 s=начальный встроенный элемент запуска
 l=ограничение встроенного элемента запуска
> закрытие тега line
<run элементы строки
 s=начальный встроенный элемент запуска
 l=ограничение встроенного элемента запуска
> закрытие тега run
<inter внутренний элемент
 cursor=курсор символа (индекс исходного текста)
 tcb=граница типографического кластера
 wb=граница слова
 lbo=возможный разрыв строки
 lb=действительный разрыв строки
/> конец тега inter
<char элемент символа
 usv=Скалярное значение в кодировке Юникод
/> конец тега char
<glyph вычисленный или сформированный элемент глифа
 font=название шрифта
 gid=индекс глифа
 xa=xAdvance
 ya=yAdvance
 xp=xPlacement
 yp=yPlacement
 r=rotation
 color=цвет
 xP=xPosition
 yP=yPosition
 attached=соединены ли два элемента
 itcbo=смещения внутренних типографических границ кластера
 bl=двусторонний уровень
 sc=интервальный класс
/> конец тега glyph
<fo графический элемент
 id=идентификатор элемента
 xa=xAdvance
 ya=yAdvance
 xp=xPlacement
 yp=yPlacement
 r=rotation
 color=цвет
 xP=xPosition
 yP=yPosition
 lb=левая граница
 rb=правая граница
 tb=верхняя граница
 bb=нижняя граница
 itcbo=смещения внутренних типографических границ кластера
 bl=двусторонний уровень
 sc=интервальный класс
/> конец тега fo
<embeddedRun встроенный запуск
 xa=xAdvance
 ya=yAdvance
 xp=xPlacement
 yp=yPlacement
 r=вращение
 xP=xPosition
 yP=yPosition
> закрытие тега embeddedRun
<run> запуск
</run> окончание тега run
</embeddedRun> закрытие тега embeddedRun
<carets знаки вставки строки
 s=начальный встроенный элемент запуска
 l=ограничение встроенного элемента запуска
> закрытие тега carets
<cursor> курсор
 x=положение по х слева
/> конец тега cursor
<cluster кластер
 c=положение по центру
 s=начало смещения tc
 l=ограничение смещения tc
 bidiдвусторонний уровень
/> конец тега cluster
</carets> закрытие тега carets
</строка> закрытие тега line
</block> закрытие тега block

Возвращает
String

См. также

findNextAtomBoundary()метод 
public function findNextAtomBoundary(afterCharIndex:int):int

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Находит индекс следующей границы атома для заданного индекса символа, исключая символ по заданному индексу. Символы между границами атомов вместе формируют один атом в TextLine, например "e", и надстрочный значок ударения.

Параметры

afterCharIndex:int — Задает индекс символа, после которого нужно искать следующую границу атома.

Возвращает
int — Индекс следующей границы атома после заданного индекса символа.

Выдает
RangeError — Указанный индекс лежит вне диапазона.
 
IllegalOperationError — Строка TextLine, которой принадлежит индексируемый символ, недействительна.

См. также

findNextWordBoundary()метод 
public function findNextWordBoundary(afterCharIndex:int):int

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Находит индекс следующей границы слова от указанного индекса символа, исключая символ по заданному индексу. Границы слов определяются на основе свойств символов в кодировке Unicode.

Параметры

afterCharIndex:int — Задает индекс символа, после которого нужно искать следующую границу слова.

Возвращает
int — Индекс следующей границы слова после заданного индекса символа.

Выдает
RangeError — Указанный индекс лежит вне диапазона.
 
IllegalOperationError — Строка TextLine, которой принадлежит индексируемый символ, недействительна.
findPreviousAtomBoundary()метод 
public function findPreviousAtomBoundary(beforeCharIndex:int):int

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Находит индекс предыдущей границы атома для указанного индекса символа, исключая символ по указанному индексу. Символы между границами атомов вместе формируют один атом в TextLine, например "e", и надстрочный значок ударения.

Параметры

beforeCharIndex:int — Задает индекс символа, до которого нужно искать предыдущую границу атома.

Возвращает
int — Индекс предыдущей границы атома до заданного индекса символа.

Выдает
RangeError — Указанный индекс лежит вне диапазона.
 
IllegalOperationError — Строка TextLine, которой принадлежит индексируемый символ, недействительна.

См. также

findPreviousWordBoundary()метод 
public function findPreviousWordBoundary(beforeCharIndex:int):int

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Находит индекс предыдущей границы слова для указанного индекса символа, исключая символ по указанному индексу. Границы слов определяются на основе свойств символов в кодировке Unicode.

Параметры

beforeCharIndex:int — Задает индекс символа, до которого нужно искать предыдущую границу слова.

Возвращает
int — Индекс предыдущей границы слова до заданного индекса символа.

Выдает
RangeError — Указанный индекс лежит вне диапазона.
 
IllegalOperationError — Строка TextLine, которой принадлежит индексируемый символ, недействительна.
getTextLineAtCharIndex()метод 
public function getTextLineAtCharIndex(charIndex:int):TextLine

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Возвращает элемент TextLine, содержащий символ, заданный параметром charIndex.

Параметры

charIndex:int — Отсчитываемое от нуля значение индекса для символа (например, первый символ — 0, второй символ — 1 и т.д.)

Возвращает
TextLine — Элемент TextLine, содержащий символ с индексом charIndex.

Выдает
RangeError — Указанный индекс символа находится за пределами диапазона.
releaseLines()метод 
public function releaseLines(firstLine:TextLine, lastLine:TextLine):void

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Удаляет диапазон текстовых строк из списка строк, поддерживаемых текстовым блоком TextBlock. Это позволяет очищать строки, если не существует других ссылок.

Задает значение членов textBlock, nextLine и previousLine удаленных строк null. Задает значение валидности удаленных строк и следующих за ними в блоке TextBlock TextLineValidity.INVALID.

Параметры

firstLine:TextLine — Указывает первую строку для освобождения.
 
lastLine:TextLine — Указывает последнюю строку для освобождения.


Выдает
ArgumentError — Если TextLine, заданная параметрами firstLine или lastLine не включена в список текстовых строк, поддерживаемых блоком.

См. также

Примеры Как пользоваться примерами
TextBlockExample.as

В этом примере демонстрируется три абзаца TextBlock японского и английского текста. Японский текст из кодов символов Юникод преобразуется в строки. При нажатии кнопки пример поворачивает текст из горизонтального в вертикальное положение или наоборот.
  1. Добавьте Button в библиотеку.
  2. Сохраните этот код под именем TextBlockExample.as в том же каталоге, где и FLA-файл.
  3. Задайте класс TextBlockExample на панели "Свойства в FLA-файле.
package { 
    import fl.controls.Button;
     import flash.text.engine.TextBlock;
    import flash.text.engine.TextLine;
    import flash.text.engine.TextElement;
    import flash.text.engine.ElementFormat;
    import flash.text.engine.TextRotation;
    import flash.text.engine.TextBaseline;
    import flash.text.engine.LineJustification;
    import flash.text.engine.FontDescription;
    import flash.text.engine.EastAsianJustifier; 
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.events.MouseEvent;
    import flash.system.Capabilities;
    
    public class TextBlockExample extends Sprite {
        
        var vertical:Boolean;    
        var container:Sprite;
        var textBlocks:Vector.<TextBlock>;
        var loader:Loader = new Loader();
        var directionButton:Button = new Button();
        
        public function TextBlockExample():void {
            addChild(directionButton);
            directionButton.width = 30;
            directionButton.move(50, 350);
            directionButton.addEventListener(MouseEvent.CLICK, clickHandler);
            createContent();
            createLines();
        }

        private function createEmptyBlock():TextBlock {
        
            var textBlock:TextBlock = new TextBlock();
            textBlock.baselineZero = TextBaseline.IDEOGRAPHIC_CENTER;
            textBlock.textJustifier = new EastAsianJustifier("ja", LineJustification.ALL_BUT_LAST);
            textBlock.lineRotation = vertical? TextRotation.ROTATE_90: TextRotation.ROTATE_0;
            return textBlock;    
        }
        
        private function paragraph1(format:ElementFormat):TextBlock {
        
            var textBlock:TextBlock = createEmptyBlock();
            textBlock.content = new TextElement(
            String.fromCharCode(
                0x5185, 0x95A3, 0x5E9C, 0x304C, 0x300C, 0x653F, 0x5E9C, 0x30A4,
                0x30F3, 0x30BF, 0x30FC, 0x30CD, 0x30C3, 0x30C8, 0x30C6, 0x30EC, 
                0x30D3, 0x300D, 0x306E, 0x52D5, 0x753B, 0x914D, 0x4FE1, 0x5411, 
                0x3051, 0x306B, 0x30A2, 0x30C9, 0x30D3, 0x30B7, 0x30B9, 0x30C6, 
                0x30E0, 0x30BA, 0x793E, 0x306E
            ) +
            "FMS 2" +
            String.fromCharCode(0x3092, 0x63A1, 0x7528, 0x3059, 0x308B, 0x3068, 
                0x767a, 0x8868, 0x3057, 0x307e, 0x3057, 0x305F, 0x3002), format);
            return textBlock;
        }

        private function paragraph2(format:ElementFormat):TextBlock {
            
            var textBlock:TextBlock = createEmptyBlock();
            textBlock.content = new TextElement(
            String.fromCharCode(
                0x30AF, 0x30ED, 0x30B9, 0x30D7, 0x30E9, 0x30C3, 0x30C8, 0x30D5, 
                0x30A9, 0x30FC, 0x30E0, 0x4E0A, 0x3067, 0x518D, 0x751F, 0x53EF, 
                0x80FD, 0x306A
            ) + 
            "Flash Video" +
            String.fromCharCode(
                0x3092, 0x914D, 0x4FE1, 0x3001, 0x653F, 0x5E9C, 0x6700, 0x65B0, 
                0x60C5, 0x5831, 0x3092, 0x3088, 0x308A, 0x591A, 0x304F, 0x306E, 
                0x56FD, 0x6C11, 0x306B, 0x9AD8, 0x54C1, 0x8CEA, 0x306A, 0x753B, 
                0x50CF, 0x3067, 0x7C21, 0x5358, 0x304B, 0x3064, 0x30EA, 0x30A2, 
                0x30EB, 0x30BF, 0x30A4, 0x30E0, 0x306B, 0x63D0, 0x4F9B, 0x3059, 
                0x308B, 0x3053, 0x3068, 0x304C, 0x53EF, 0x80FD, 0x306B, 0x306A, 
                0x308A, 0x307e, 0x3057, 0x305F, 0x3002), format);
            return textBlock;    
        }

        private function paragraph3(format:ElementFormat):TextBlock {
            
            var textBlock:TextBlock = createEmptyBlock();
            textBlock.content = new TextElement(
            String.fromCharCode(0x3010) +
            "2007" +
            String.fromCharCode(0x5E74) + "2" + String.fromCharCode(0x6708) +
            "21" +
            String.fromCharCode(0x65E5, 0x3011),
            format);
            return textBlock;    
        }

        private function createContent():void {
            
            var font:FontDescription = new FontDescription();
            if (Capabilities.os.search("Mac OS") > -1) 
                font.fontName = String.fromCharCode(0x5C0F, 0x585A, 0x660E, 0x671D) + " Pro R"; // "Kozuka Mincho Pro R"                    koFont.fontName = "Adobe " + String.fromCharCode(0xBA85, 0xC870) + " Std M"; // "Adobe Myungjo Std M"
            else 
                font.fontName = "Kozuka Mincho Pro R";        
            var format:ElementFormat = new ElementFormat();
            format.fontDescription = font;
            format.fontSize = 12;
            format.locale = "ja";
            format.color = 0x000000;
            if (!vertical) 
                format.textRotation = TextRotation.ROTATE_0; 
            textBlocks = new Vector.<TextBlock>();
            textBlocks.push(
                paragraph1(format),
                paragraph2(format),
                paragraph3(format)//,
            );
        }

        private function createLines():void {    
        
            if (container != null) {
                removeChild(container);
            }            
            container = new Sprite();
            container.y = 45;
            container.x = 40;
            addChild(container);
            var linePosition:Number = vertical? this.stage.stageWidth - 120: 12;
        
            for (var i:uint = 0; i < textBlocks.length; i++) {
                var textBlock:TextBlock = textBlocks[i];
                var previousLine:TextLine = null;
        
                while (true) {
                    var textLine:TextLine = textBlock.createTextLine(
                        previousLine, 
                        300);
                    if (textLine == null) 
                        break;
                    if (vertical) 
                    {
                        textLine.x = linePosition;
                        linePosition -= 24;
                        directionButton.label = " -- ";
                    }
                    else 
                    {
                        textLine.y = linePosition+50;
                        linePosition += 24;
                        directionButton.label = " | ";
                    }
                    container.addChild(textLine);                
                    previousLine = textLine;
                }
                if (vertical) 
                    linePosition -= 16;
                else 
                    linePosition += 16; 
            }
        }

        private function clickHandler(event:MouseEvent):void {
            
            vertical = !vertical;
            createContent();
            createLines();
        }
    }
}