我正在开发一个项目,该项目使用批处理脚本来检查特定网络中计算机的可用性(ping)。当与脚本结果完全匹配时,它还会更改基于Flash的UI中对象的颜色。
实施例
1)脚本运行检查并输出到results.txt:
192.168.0.1 = UP
192.168.0.2 = DOWN
192.168.0.3 = UP
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"));
}
答案 0 :(得分:0)
如果您正在寻找非常具体的字符串“192.168.0.1 = UP”,您可以使用indexOf()
并检查结果是否为-1:
function onLoaded(e:Event):void {
trace(e.target.data);
if (e.target.data.indexOf("192.168.0.1=UP") != -1) {
// Change to green
}
else {
// Change to red
}
}