Отображение текста

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Хотя в инструментах разработки, таких как Adobe Flash Builder и Flash Professional, предусмотрено несколько способов отображения текста, включая текстовые компоненты и текстовые инструменты, простейшим способом программного отображения текста является использование текстового поля.

Типы текста

Тип текста в текстовом поле определяется по его источнику.

  • Динамический текст

    Динамический текст включает содержимое, загруженное из внешнего источника, например, текстового файла, XML-файла или даже удаленной web-службы.

  • Вводимый текст

    Вводимый текст — это текст, введенный пользователем, или динамический текст, который может быть изменен пользователем. Можно создать таблицу стилей для форматирования вводимого текста или использовать класс flash.text.TextFormat для назначения свойств текстовому полю для вводимого содержимого. Дополнительные сведения см. в разделе « Захват введенного текста ».

  • Статический текст

    Статический текст создается только в инструменте Flash Professional. Экземпляр статического текста нельзя создать с помощью ActionScript 3.0. Однако классы ActionScript, такие как StaticText и TextSnapshot, можно использовать для манипуляций с существующим экземпляром статического текста. Дополнительные сведения см. в разделе Работа со статическим текстом .

Изменение содержимого текстового поля

Можно определить динамический текст, назначив строку свойству flash.text.TextField.text . Строку можно назначить свойству напрямую, как показано ниже:

myTextField.text = "Hello World";

Также можно назначить свойству text значение из переменной, определенной в сценарии, как показано в следующем примере:

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class TextWithImage extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello World"; 
 
        public function TextWithImage() 
        { 
            addChild(myTextBox); 
            myTextBox.text = myText; 
        } 
    } 
}

Или же свойству text можно назначить значение из удаленной переменной. Существует три способа загрузки текстовых значений из удаленных источников:

  • Классы flash.net.URLLoader и flash.net.URLRequest загружают переменные для текста из локального или удаленного местоположения.

  • В HTML-страницу, содержащую SWF-файл, встраивается атрибут FlashVars , который может содержать значения для текстовых переменных.

  • Класс flash.net.SharedObject управляет постоянным хранением значений. Дополнительную информацию см. в разделе Хранение локальных данных .

Отображение HTML-текста

Класс flash.text.TextField имеет свойство htmlText , которое можно использовать для определения текстовой строки с HTML-тегами для форматирования содержимого. Как показано в следующем примере, для визуализации текста Flash Player или AIR как HTML необходимо назначить строковое значение свойству htmlText (а не свойству text ).

var myText:String = "<p>This is <b>some</b> content to <i>render</i> as <u>HTML</u> text.</p>"; 
myTextBox.htmlText = myText;

Flash Player и AIR поддерживают подгруппу тегов и сущностей HTML для свойства htmlText . Дополнительные сведения о поддерживаемых тегах и сущностях HTML см. в описании свойства flash.text.TextField.htmlText в справочнике ActionScript® 3.0 для Adobe® Flash® Professional CS5.

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

Использование изображений в текстовых полях

Еще одним преимуществом отображения содержимого в виде HTML-текста является то, что в текстовые поля можно включать изображения. Для ссылки на локальное или удаленное изображение можно использовать тег img , который следует добавить в соответствующее текстовое поле.

В следующем примере создается текстовое поле myTextBox , в котором в отображаемый текст включено изображение глаза в формате JPG, сохраненное в том же каталоге, что и SWF-файл.

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class TextWithImage extends Sprite 
    { 
        private var myTextBox:TextField; 
        private var myText:String = "<p>This is <b>some</b> content to <i>test</i> and <i>see</i></p><p><img src='eye.jpg' width='20' height='20'></p><p>what can be rendered.</p><p>You should see an eye image and some <u>HTML</u> text.</p>"; 
 
        public function TextWithImage() 
        { 
            myTextBox.width = 200; 
            myTextBox.height = 200; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.border = true; 
 
            addChild(myTextBox); 
            myTextBox.htmlText = myText; 
        } 
    } 
}

Тег img поддерживает теги в формате JPEG, GIF, PNG и SWF.

Прокрутка текста в текстовом поле

Во многих случаях длина текста превышает длину текстового поля, в котором отображается текст. Иногда поля ввода позволяют ввести текст, выходящий за пределы области отображения. Свойства класса flash.text.TextField, связанные с прокруткой, можно использовать для управления объемным содержимым с помощью прокрутки по вертикали или по горизонтали.

С прокруткой связаны свойства TextField.scrollV , TextField.scrollH , maxScrollV и maxScrollH . Их можно использовать для реагирования на такие события, как щелчок мыши или нажатие клавиши.

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

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
    import flash.events.MouseEvent; 
 
    public class TextScrollExample extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello world and welcome to the show. It's really nice to meet you. Take your coat off and stay a while. OK, show is over. Hope you had fun. You can go home now. Don't forget to tip your waiter. There are mints in the bowl by the door. Thank you. Please come again."; 
 
        public function TextScrollExample() 
        { 
            myTextBox.text = myText; 
            myTextBox.width = 200; 
            myTextBox.height = 50; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.background = true; 
            myTextBox.border = true; 
 
            var format:TextFormat = new TextFormat(); 
            format.font = "Verdana"; 
            format.color = 0xFF0000; 
            format.size = 10; 
 
            myTextBox.defaultTextFormat = format; 
            addChild(myTextBox); 
            myTextBox.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownScroll); 
        } 
 
        public function mouseDownScroll(event:MouseEvent):void 
        { 
            myTextBox.scrollV++; 
        } 
    } 
}