在AS3中读取一个字符串

时间:2016-12-10 23:11:38

标签: actionscript-3 flash actionscript

我对我的项目有一个问题,即如何在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);
}

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

2 个答案:

答案 0 :(得分:1)

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

adobe As3 DOC:

  

join()将数组中的元素转换为字符串,插入   元素之间指定的分隔符,连接它们,和   返回结果字符串。嵌套数组始终用a分隔   逗号(,),而不是传递给join()方法的分隔符。

所以str = days.join("");将数组转换为单个字符串,并且当你的需求(传递给join的参数为空&#34;&#34;)时,获取的行之间没有任何东西。 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")将其与&#34; ==&#34;进行比较。运算符,因为像&#34; \ r&#34;这样的隐形字符或&#34; \ n&#34;。

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

答案 1 :(得分:0)

回答第一部分:

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

我希望我能正确理解你。 我是从记忆中写的,如果有的话,抱歉打字错误

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

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