1

我正在开发一个项目,该项目使用批处理脚本来检查特定网络中计算机的可用性(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"));

}
4

1 回答 1

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
    }
}
于 2013-01-02T22:37:03.483 回答