使用静态文本
Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本
仅在 Flash Professional 中创建静态文本。不能使用 ActionScript 以编程方式对静态文本进行实例化。静态文本非常适用于简短且不会更改(动态文本则会更改)的文本。可以将静态文本看作一种图形元素,类似于 Flash Professional 中在舞台上绘制的圆形或正方形。由于静态文本比动态文本受到更多的限制,ActionScript 3.0 允许使用 StaticText 类读取静态文本的属性值。另外还可使用 TextSnapshot 类从静态文本中读取值。
使用 StaticText 类访问静态文本字段
通常,可使用 Flash Professional 的“动作”面板中的 flash.text.StaticText 类与舞台上放置的静态文本实例交互。也可以在与包含静态文本的 SWF 文件进行交互的 ActionScript 文件中执行类似工作。但是这两种情况下都不能以编程方式对静态文本实例进行实例化。在 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 的变量。相对于 myFieldLabel 的 x 和 y 值放置名为 myField 的动态文本字段,并再次显示 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 类来与 flash.display.DisplayObjectContainer 的 textSnapshot 属性配合工作。也就是说,通过 DisplayObjectContainer.textSnapshot 属性创建 TextSnapshot 实例。然后,可以将方法应用于该实例,以检索值或选择部分静态文本。
例如,请在舞台上放置一个包含文本“TextSnapshot Example”的静态文本字段。将下面的 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 文件中的静态文本字段中获取文本非常有用。