读取 AS3 中的字符串

Read a string in AS3

我有一个关于我的项目的问题,即如何在 AS3 中读取字符串。

实际上,我有一个名为 test.txt 的文本文件。例如:

它包括: 周日、周一、周二、周三、周四、周五、周六

然后我想将它们全部放入一个数组中,然后将一个字符串显示在名为 text_txt:

的动态文本框中
var myTextLoader:URLLoader = new URLLoader();

myTextLoader.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(e:Event):void
{
 var days:Array = e.target.data.split(/\n/);
 var str:String;
 stage.addEventListener(MouseEvent.CLICK, arrayToString);

 function arrayToString(e:MouseEvent):void
  {
    for (var i=0; i<days.length; i++)
    {
        str = days.join("");
        text_txt.text = str + "\n" + ";"; //it does not work here
    }
 }
}

myTextLoader.load(new URLRequest("test.txt"));

但它没有在不同的行中显示它们,然后放一个“;”在每行的末尾!

我可以让它在不同的行中显示它们,但我需要将它们放在 txt 文件中的不同行中,而且我仍然没有得到“;”在每一行的末尾,除非把它放在下一个文件中,也在每一行的末尾。

然后我想读取字符串并根据每个单词或行显示我的库中的一个对象。例如:

//I  do not know how to write it or do we have a function to read a string and devide it to the words after each space or line 
if (str.string="sun"){
 show(obj01);
}
if (str.string="mon"){
 show(obj02);
}

我希望我能得到这个问题的答案。 如果您无法理解最后一部分的概念,请通知我。在你能帮助我之前,我会尝试更多地解释它。 提前致谢

第一部分答案:

for (var i=0; i<days.length; i++)
    {
        str = days[i];
        text_txt.text += str + ";" + "\n";
    }

希望我理解正确.. 凭记忆写的,如有错别字请见谅...

对于第二部分,添加一个 switch-case

switch(str) {
     case "sun":
           Show(??);
           break;
    .
    .
    .
}

您必须为您的 TextField 启用多行功能(如果没有)


adobe As3 文档:

join() Converts the elements in an array to strings, inserts the specified separator between the elements, concatenates them, and returns the resulting string. A nested array is always separated by a comma (,), not by the separator passed to the join() method.


so str = days.join(""); 将 Array 转换为单个字符串,并且根据您的要求(传递给 join 的参数为空“”),获取的行之间没有任何内容。而text_txt.text = str + "\n" + ";";只在文末放了一个换行一次。

var myTextLoader:URLLoader = new URLLoader();
var days:Array;

myTextLoader.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(e:Event):void
{
    days = e.target.data.split(/\n/);
    var str:String;
    stage.addEventListener(MouseEvent.CLICK, arrayToString);
}

myTextLoader.load(new URLRequest("test.txt"));


function arrayToString(e:MouseEvent):void
{
    text_txt.multiline = true;
    text_txt.wordWrap = true;
    text_txt.autoSize = TextFieldAutoSize.LEFT;
    text_txt.text = days.join("\n");
}

我也将 arrayToString 移出了 onLoaded

对于第二个问题:要检查单词的存在性,最好使用 indexOf("word") 而不是将其与“==”运算符进行比较,因为“\r”或“\n”等不可见字符。

if (str.indexOf("sun") >= 0){
    show(obj01);
}
if (str.indexOf("mon") >= 0){
    show(obj02);
}