0

actionscript で Facebook クライアントを構築していますが、問題が発生しています。私はこのコードブロックを持っています:

        var loader:URLLoader = URLLoader(event.target);

        var feedResponse:String = (event.target.data);
        var object:Object = JSON.decode(feedResponse); //getting the data

        var friendsStatus:Array = new Array(); //array for status'
        var friendsName:Array = new Array(); //array for names

        var startX:int = 120;
        var startY:int = 100;

        var myFormat:TextFormat = new TextFormat();
        myFormat.size = 16;

        var statusMessage:TextField = new TextField();
        statusMessage.defaultTextFormat = myFormat;
        statusMessage.wordWrap = true;
        statusMessage.width = 600;

        var faceFriend:TextField = new TextField();
        faceFriend.defaultTextFormat = myFormat;
        faceFriend.wordWrap = true;
        faceFriend.width = 300;

        for(var i:int = 0; i < 10; i++)
        {
            if(object.data[i].message == undefined){
                var userStory:String = object.data[i].story; // mowing through the facebook JSON response
                friendsStatus[i] = userStory;
            } else {
                var userStatus:String = object.data[i].message;
                friendsStatus[i] = userStatus;
            }

            var fName:String = object.data[i].from.name;
            friendsName[i] = fName;
        } 

        for(var j:int; j < 10; j++) // The headache loop
        {
            faceFriend.x = startX;
            faceFriend.y = startY;

            faceFriend.text = friendsName[j]; //assign the current name to the TextField text property
            addChild(faceFriend); //add it to the stage
            startY += 30; //increase the y value so they dont overlap
            trace(startY);
            trace(faceFriend.text);
            trace("");

            statusMessage.x = startX;
            statusMessage.y = startY;

            statusMessage.text = friendsStatus[j]; //same here for the status'
            addChild(statusMessage);
            startY += 20;
            trace(startY);
            trace(statusMessage.text);
            trace("");
        }

一連のステータスをループすることになっている'、それらを変数に割り当ててステージに追加します。しかし、私が達成したのは、ステージに追加された最後のステータスだけです。すべてのトレースからわかるように、すべての配列に正しい情報が含まれており、y 値 (すべてが重なり合っているわけではない) が正しく進行していることを発見しました。最終的な TextField 以外を表示することを拒否するだけです:(

何か案は?

PS私はそれが正確に素晴らしいコードではないことを認識しています-事前に頭痛の種で申し訳ありません:P

4

2 に答える 2

0

作成する必要があります

var faceFriend:textField inside the loop.

現在行っているのは、1つのテキストフィールドを作成し、それを何度も操作することです。これが問題を引き起こしています。このコードは10個のフィールドを生成し、それらを水平方向に配置します。

var faceFriend:TextField;

for(var i:uint;i<10;i++)
{
    faceFriend = new TextField();
    faceFriend.x = i*20;
    addChild(faceFriend);
}

一方、このコードは1つのフィールドを生成し、それを10回操作して、1つのフィールドを表示します。これは、基本的には実行していることです。

var facefriend:TextField = new TextField();

 for(var i:uint;i<10;i++)
 {
    faceFriend.x = i*20;
    addChild(faceFriend);
 }

これ

于 2011-11-03T13:54:48.700 に答える
0

今行っていることは、インスタンスを 1 つだけ作成することです。次に、ループ内の位置を設定しているため、最初に作成したものが移動しています。

10 個のテキスト フィールドを作成するには、ループ内にインスタンスを作成する必要があります。

だからあなたがする必要があるでしょう

for(var i:int=0; i<10; i++) {
var faceFriend:TextField = new TextField();
faceFriend.defaultTextFormat = myFormat;
faceFriend.wordWrap = true;
faceFriend.width = 300;
//Everything else
}
于 2011-11-03T14:05:28.197 に答える