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-файле, если этот текст требуется использовать в качестве значения в другой части приложения.
|
|
|