我正在尝试创建一个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:等)
非常感谢任何帮助
答案 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”,然后“:”分开来尝试将它分开,但是它变得更加混乱并且可能容易出错。玩家的名字中包含“团队”或“玩家”。