flash中通过XMLSocket监控生产系统(2-3)
二、技术介绍
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中的常量,表示换行。