使用actionscript 3使用文本文件中的文本更改动态文本

时间:2012-11-23 03:21:10

标签: flash text actionscript external string-formatting

我正在尝试创建一个flash,每次启动.swf文件时,文本都会从文本文件动态更新。

在谈到这一点时,我不是最聪明的,但我会尝试解释我想做的事。

我希望以某种格式提供.txt文件。与此相似

示例:

    Team1: Time
    Player1: Dusk
    Player2: Dawn
    Player3: Noon
    Team2: Food
    Player1: Pizza
    Player2: Cheese
    Player3: Bread

然后在每个元素之后输出文本并将它们输出到具有相同名称的动态文本对象。

我会有一个名为Team1的空文本对象:运行此脚本后,它会显示“Time”而不是空白。

我尝试了几种不同的方式来读取文件,但是当涉及到拆分并将其发送到我遇到问题的动态文本对象时。

从闪光灯中正确调节的最终结果看起来像这样

    Time        vs        Food
    Dusk                  Pizza
    Dawn                  Cheese
    Noon                  Bread

这是我现在所拥有的当前代码

    var TextLoader:URLLoader = new URLLoader();
    TextLoader.addEventListener(Event.COMPLETE, onLoaded);
    function onLoaded(e:Event):void {
        var PlayerArray:Array = e.target.data.split(/\n/);
    }
   TextLoader.load(new URLRequest("roster1.txt"));

所以问题是,我如何使用我使用的格式正确分割,然后将动态文本设置为文本后跟标记(team1:,player1:等)

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

以下是分割数据的快速而肮脏的尝试:

假设前缀和值将以“:”分隔,并且“团队”用于确定团队的开始。

它循环遍历字符串数组并沿“:”拆分每个字符串,然后检查前缀是否包含字符串“Team”以确定它是新团队的开始还是当前的团队成员现任团队。

//assumes this is the starting state of the data
var playerArray:Array = new Array();
playerArray.push("Team1: Time",
"Player1: Dusk",
"Player2: Dawn",
"Player3: Noon",
"Team2: Food",
"Player1: Pizza",
"Player2: Cheese",
"Player3: Bread");

var teams:Array = new Array();
var currentTeam:Array = new Array();;
var prefix:String;
var value:String;
for(var counter:int = 0; counter < playerArray.length; counter++){
    prefix = playerArray[counter].substring(0, playerArray[counter].indexOf(": "));
    value =  playerArray[counter].substring(playerArray[counter].indexOf(": ") + ": ".length);

    // found a team prefix, this is the start of a new team
    if(prefix.indexOf("Team") != -1){
        teams.push(currentTeam);
        currentTeam = new Array();
        currentTeam.push(value); // add the name of the currentTeam to the array
    } else {
        // else this should be a player, add it to the currentTeam array
        currentTeam.push(value);
    }
}
// add the last team
teams.push(currentTeam);
// remove the first empty team array just due to the way the loop works
teams.shift();

trace(teams.length); // traces 2
trace(teams[0]); // traces the team members of first team
trace(teams[1]); // traces the team members of next team

结果是一组团队数组,其中每个团队数组的索引0是团队名称,后面跟着玩家。

从这里你应该能够创建文本字段(或使用现有文本字段)并从数组中设置文本。

也许其他人可以提出更有效的方法?我还试图通过将它组合成一个长字符串然后沿着“Team”,然后是“Player”,然后“:”分开来尝试将它分开,但是它变得更加混乱并且可能容易出错。玩家的名字中包含“团队”或“玩家”。