AS3 - 如果存在MATCH,则从对象的外部.txt和CHANGE颜色中读取文本

时间:2013-01-02 22:29:29

标签: actionscript-3

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

}

1 个答案:

答案 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
    }
}