Работа со статическим текстом

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

Статический текст создается только в инструменте Flash Professional. Создать экземпляр статического текста с помощью программного кода с использованием ActionScript невозможно. Статический текст удобно использовать, если текст короткий и не предназначен для изменения (в отличие от динамического текста). Статический текст похож на графический элемент, такой как круг или квадрат, нарисованный в рабочей области в инструменте Flash Professional. Хотя статический текст имеет больше ограничений, чем динамический, ActionScript 3.0 позволяет считывать значения его свойств с помощью класса StaticText. Также значения статического текста можно считывать с помощью класса TextSnapshot.

Доступ к статическим текстовым полям с помощью класса StaticText

Обычно для взаимодействия с экземпляром статического текста, добавленным в рабочую область, используется класс flash.text.StaticText на панели «Действия» инструмента Flash Professional. Кроме того, можно работать в файлах ActionScript, взаимодействующих с SWF-файлом, содержащим статический текст. В любом случае статический текст невозможно создать с помощью программного кода. Статический текст создается в инструменте Flash Professional.

Для создания ссылки на существующее статическое текстовое поле необходимо выполнить повторное прохождение для элементов в списке отображения и назначить переменную. Например:

for (var i = 0; i < this.numChildren; i++) { 
var displayitem:DisplayObject = this.getChildAt(i); 
if (displayitem instanceof StaticText) { 
trace("a static text field is item " + i + " on the display list"); 
        var myFieldLabel:StaticText = StaticText(displayitem); 
        trace("and contains the text: " + myFieldLabel.text); 
} 
}

Создав ссылку на статическое текстовое поле, можно использовать его свойства в ActionScript 3.0. Следующий код присоединяется к кадру на временной шкале, а переменная myFieldLabel назначается ссылке на статический текст. Динамическое текстовое поле myField помещается в точке с координатами x и y , определенными в myFieldLabel , и повторно отображает значение myFieldLabel .

var myField:TextField = new TextField(); 
addChild(myField); 
myField.x = myFieldLabel.x; 
myField.y = myFieldLabel.y + 20; 
myField.autoSize = TextFieldAutoSize.LEFT; 
myField.text = "and " + myFieldLabel.text

Использование класса TextSnapshot

Если требуется обработать существующий экземпляр текста с помощью программного кода, можно использовать класс flash.text.TextSnapshot для получения свойства textSnapshot экземпляра flash.display.DisplayObjectContainer. Другими словами, можно создать экземпляр TextSnapshot из свойства DisplayObjectContainer.textSnapshot . Затем, применив методы к этому экземпляру, можно получить значения или выделить фрагменты статического текста.

Например, поместите в рабочую область статическое текстовое поле с текстом «Пример TextSnapshot». Добавьте следующий код ActionScript в кадр 1 на временной шкале:

var mySnap:TextSnapshot = this.textSnapshot; 
var count:Number = mySnap.charCount; 
mySnap.setSelected(0, 4, true);  
mySnap.setSelected(1, 2, false);  
var myText:String = mySnap.getSelectedText(false);  
trace(myText); 

Класс TextSnapshot полезен для получения текста из статических текстовых полей в загруженном SWF-файле, если этот текст требуется использовать в качестве значения в другой части приложения.