2

.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 に答える