动态创建文本字段是每个Flasher都习惯做的事情,我想很多Flasher都会像我一样,很多时候在动态创建文本字段时,都是createTextField,然后设定文本内容及TextFormat对象,文本字段(TextField)对象的宽度和高度设定得越大越好或者需要时调整一下_width、_height,从来没去考虑文本字段对象大小与显示的文本内容是否真正的合适和匹配。
下午翻阅文档时不经意从MM的帮助中看到了相关代码,作了一点修改,贴出来分享一下,了解的朋友可以温习一下,呵呵。
CODE:
/**
* 示例一
* 此示例创建一个单行文本字段,其大小刚好足够使用指定格式显示一个文本字符串。
*/
var text_str:String = "Merry Christmas and Happy New Year to Everyone";
// 创建一个TextFormat 对象
var txt_fmt:TextFormat= new TextFormat();
// 为该TextFormat 对象指定格式属性
txt_fmt.font = "Arial";
txt_fmt.color = 0xFF0000;
txt_fmt.bold = true;
// 获取该文本字符串使用指定格式时的度量信息
var metrics:Object = txt_fmt.getTextExtent(text_str);
// 使用刚刚获取的度量信息创建一个新的TextField 对象
this.createTextField ("singleline_txt", 0, 10, 10, metrics.textFieldWidth, metrics.textFieldHeight);
singleline_txt.border = true;
// 设定文本字段是否自动换行,默认为不自动换行
//singleline_txt.wordWrap = true;
// 将相同的文本字符串和 TextFormat 对象分配给singleline_txt 对象
singleline_txt.text = text_str;
singleline_txt.setTextFormat(txt_fmt);
/**
* 示例二
* 下面的示例创建一个100 像素宽的多行文本字段,其高度足够使用指定的格式显示一个字符串。
*/
// 创建一个TextFormat 对象
var txt_fmt:TextFormat= new TextFormat();
// 为该TextFormat 对象指定格式属性
txt_fmt.font = "Arial";
txt_fmt.color = 0xFF0000;
txt_fmt.bold = true;
txt_fmt.leading = 4;
// 要显示的文本字符串
var textToDisplay_str:String = "Merry Christmas and Happy New Year to Everyone";
// 获取该文本字符串使用指定格式时的度量信息
var metrics:Object = txt_fmt.getTextExtent(textToDisplay_str, 100);
// 使用刚刚获取的度量信息创建一个新的TextField 对象
this.createTextField ("multiline_txt", 1, 50, 50-metrics.ascent, 100, metrics.textFieldHeight);
multiline_txt.wordWrap = true;
multiline_txt.border = true;
// 将相同的文本字符串和 TextFormat 对象分配给multiline_txt 对象
multiline_txt.text = textToDisplay_str;
multiline_txt.setTextFormat(txt_fmt);
附:
fla源文件下载