2011-11-03 58 views
0

我在ActionScript中構建一個Facebook客戶端,和我遇到的一個問題。我有這個代碼塊:與TextField的只顯示最後一個AS3的addChild添加

 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值(所以它不是全部在另一個之上)正在正確地進展。它只是拒絕讓任何東西,但最終的文本字段可見:(

任何想法

PS我意識到這不是正是輝煌的代碼 - 遺憾的頭痛提前:P

回答

0

您需要創建

var faceFriend:textField inside the loop. 

目前你正在做什麼是創建一個文本字段,並一遍又一遍地操作它。這是造成問題。此代碼將產生10個領域和水平對齊。

var faceFriend:TextField; 

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

而這段代碼會產生一個字段來操作它10次,並向您顯示一個字段,這基本上就是您在做什麼。

var facefriend:TextField = new TextField(); 

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

+0

哇,太感謝你了傢伙,這固定我的問題:)不能相信我沒想到的吧! – user1027657

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 
} 
相關問題