### flash 中通过 XMLSocket 监控生产系统(2-3)

关键字：flash、XML、XMLSocket、TextField、Web 方式、及时监控
二、技术介绍
3、TextField 文本域对象
在介绍 TextField 对象之前，首先我们须明白，在 Flash 中，有三种文本：
1) 静态文本（Static Text）
内容和样式都在创作是决定，在 Flash MX 中，可以有竖直的静态文本，在 Flash 属性检查器中设置(关于静态文本的详细阐述，请参见作者的另一篇文章“Flash Text”)。
2) 动态文本（Dynamic Text）
是 TextField 对象的一个实例，可以在 Flash 属性检查器中为其设置唯一的实例名，然后就可以使用该实例名来使用相应的方法与属性以改变动态文本的内容与样式。
本文所介绍的使用 XMLSocket 以 Web 方式对生产系统进行及时监控的应用案例中，就是使用动态文本以不同的颜色来显示服务端发送过来的不同信息：
function myOnXML(doc) {
var e = doc.firstChild;
Selection.setFocus("_root.txt");
Selection.setSelection(0,0);
if (e != null && e.nodeName == "MESSAGE") {
if(e.attributes.type == "error"){
myTextFormat.color = "0xff0000";
txt.setNewTextFormat(myTextFormat);
txt.replaceSel("Error -- " + e.attributes.text + " -- "
+ e.attributes.time + newline);
}else if (e.attributes.type == "normal"){
myTextFormat.color = "0x0000ff";
txt.setNewTextFormat(myTextFormat);
txt.replaceSel("Normal-- " + e.attributes.text + " -- "
+ e.attributes.time + newline);
}
}
}
以上语句是 XMLSocket 对象的 onXML 事件处理函数的部分，函数中第一条语句得到 XML 文档的第一个节点，假设服务端发送来的数据为
接着的一个嵌套 if 语句,判断变量 e 所代表的节点的类型，如果是"error"类型，就通过 myTextFormat（TextFormat 文本样式对象的一个实例），把该条信息显示成红色；如果是"error"类型，就通过 myTextFormat，把该条信息显示成蓝色；在实际场合下，可以根据需要，定义任意条信息类型。
其中的变量 txt 就表示一个动态文本对象，每次收到数据时，就调用 TextField 对象的 replaceSel() 方法把相应的数据插入到文本框的最顶行。为什么是最顶行呢？这就是 Selection.setSelection(0,0) 语句的作用，它把光标位置定位到第一行的第一个位置。其中，newline 是 Flash 中的常量，表示换行。