Flash Player 6。Flash Player 7 中支持可选的 width
参数。
my_fmt
.getTextExtent(text
, [width
])
text
一个字符串。
width
可选参数;一个表示宽度的数字(以像素为单位),指定的文本应在该处换行。
一个对象,它具有以下属性:width
、height
、ascent
、descent
、textFieldHeight
、textFieldWidth
。
方法;返回使用由 my_fmt
指定的格式表示的文本字符串 text
的文本度量信息。文本字符串被视为纯文本(而不是 HTML)。
此方法返回一个具有以下六个属性的对象:ascent
、descent
、width
、height
、textFieldHeight
和 textFieldWidth
。所有度量值均以像素为单位。
如果指定了 width
参数,指定的文本将自动换行。这样,您就可以确定文本框在显示所有指定的文本时,它的高度是多少。
ascent
和 descent
度量值分别提供一行文本的基线上面或下面的距离。第一行文本的基线位于该文本字段的原点加上其 ascent
度量值的位置。
width
和 height
度量值提供该文本字符串的宽度和高度。textFieldHeight
和 textFieldWidth
度量值提供文本字段对象显示整个文本字符串所需要具有的高度和宽度。文本字段的四周有 2 个像素宽的“槽”,因此 textFieldHeight
的值等于 height
的值 + 4;同样,textFieldWidth
的值也始终等于 width
的值 + 4。
如果要根据文本度量值创建文本字段,应使用 textFieldHeight
(而不是 height
)和 textFieldWidth
(而不是 width
)。
下图中介绍这些度量值。
设置 TextFormat 对象时,所有属性设置必须与创建文本字段时所设置的属性完全一样,包括字体名称、字体大小和前导间距量。前导间距量的默认值为 2。
此示例创建一个单行文本字段,其大小刚好足够使用指定格式显示一个文本字符串。
var text = "Small string"; // 创建一个 TextFormat 对象 // 并应用其属性。 var txt_fmt = new TextFormat(); with(txt_fmt) { font = "Arial"; bold = true; } // 获取该文本字符串使用指定格式时 // 的度量信息。 var metrics = txt_fmt.getTextExtent(text); // 创建一个文本字段,其大小刚好足够显示该文本。 this.createTextField ("textField", 0, 100, 100, metrics.textFieldWidth, metrics.textFieldHeight); textField.border = true; textField.wordWrap = true; // 将相同的文本字符串和 // TextFormat 对象分配给该 TextField 对象。 textField.text = text; textField.setTextFormat(txt_fmt);
下面的示例创建一个 100 像素宽的多行文本字段,其高度足够使用指定的格式显示一个字符串。
// 创建一个 TextFormat 对象。 var txt_fmt:TextFormat= new TextFormat(); // 为该 TextFormat 对象指定格式属性: txt_fmt.font = "Arial"; txt_fmt.bold = true; txt_fmt.leading = 4; // 要显示的文本字符串 var textToDisplay:String = "Macromedia Flash 7, now with improved text metrics."; // 获取在 100 像素换行处 // 该字符串的文本度量信息 var metrics:Object = txt_fmt.getTextExtent(textToDisplay, 100); // 使用刚刚获取的度量信息创建一个 // 新的 TextField 对象。 this.createTextField ("textField", 0, 50, 50-metrics.ascent, 100, metrics.textFieldHeight) textField.wordWrap = true; textField.border = true; // 将该文本和 TextFormat 对象分配给该 TextObject: textField.text = textToDisplay; textField.setTextFormat(aformat);