我正在开发一个项目,该项目使用批处理脚本来检查特定网络中计算机的可用性(ping)。当脚本结果完全匹配时,它还会更改基于 Flash 的 UI 中对象的颜色。
例子:
1) 脚本运行检查并输出到 results.txt:
192.168.0.1=向上
192.168.0.2=向下
192.168.0.3=向上
2) 使用 AS3,我想读取此文件并搜索类似“192.168.0.1=UP”的字符串。如果有匹配,它会将对象的颜色更改为绿色。否则,它将设置为 RED。
到目前为止,我已经设法从 Flash 中的脚本导入输出文件,使用:
var textLoader:URLLoader = new URLLoader();
textLoader.addEventListener(Event.COMPLETE, onLoaded);
function onLoaded(e:Event):void {
trace(e.target.data);
}
textLoader.load(new URLRequest("Path:/To/result.txt"));
我知道我不能让 AS3 仅在文件中搜索“192.168.0.1=UP”并在匹配时更改颜色。
如何使用导入的文本?我是否必须制作一个仅使用我需要的部分文本的字符串,然后在匹配时制作一个 IF 语句来为对象着色?
提前致谢。
更新:
感谢Gunther Fox,我能够将整个代码放在一起:
import flash.geom.ColorTransform;
var textLoader:URLLoader = new URLLoader();
textLoader.addEventListener(Event.COMPLETE, onLoaded);
function onLoaded(e:Event):void {
trace(e.target.data);
if (e.target.data.indexOf("192.168.0.1=UP") != -1) {
var colorGREEN:ColorTransform = <instance_name>.transform.colorTransform;
colorGREEN.color = 0x00FF00;
<instance_name>.transform.colorTransform = colorGREEN;
}
else {
var colorRED:ColorTransform = <instance_name>.transform.colorTransform;
colorRED.color = 0xFF0000;
<instance_name>.transform.colorTransform = colorRED;
}
}
textLoader.load(new URLRequest("Path:/To/result.txt"));
现在我的 AS3 根据批处理脚本输出更改特定对象的颜色。
更新 2
我解决了重新加载文本文件的问题:
var timer:Timer = new Timer(10000);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();
function onTimer(evt:TimerEvent):void {
var textLoader:URLLoader = new URLLoader();
textLoader.addEventListener(Event.COMPLETE, onLoaded);
textLoader.load(new URLRequest("C:/Folder/output/result.txt"));
}