使用静态文本

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 的变量。相对于 myFieldLabelxy 值放置名为 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 文件中的静态文本字段中获取文本非常有用。