2

我正在尝试制作一个 Flash,每次启动 .swf 文件时,文本都会从文本文件中动态更新。

在这方面我不是最聪明的,但我会尝试解释我想要做什么。

我想要一个特定格式的 .txt 文件。与此类似

例子:

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

然后输出每个元素后面的文本,并输出到同名的动态文本对象中。

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

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

从闪光灯适当调整的最终结果看起来像这样

    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: 等)

任何帮助将不胜感激

4

1 回答 1

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”,然后是“:”来尝试将其分离出来,但它变得更加混乱并且可能容易出错玩家名称中包含“团队”或“玩家”。

于 2012-11-23T04:09:47.293 回答