2016-04-03 18 views
0

我有一個購物清單項目,它將使用值初始化一個數組,然後允許用戶添加和移除元素。每次數組更改時,它都會對值進行排序並將其顯示在動態文本框中。Actionscript 3 Array沒有按字母順序顯示列表和總數不能正確顯示

我已經有動態文本框內文字的列表:

  • 麪包
  • 狗糧
  • 雞蛋
  • 漢堡
  • 牛奶

我的第一個問題是當我ty在輸入文本框中輸入一個新項目,然後單擊「添加項目」按鈕,文本會移到列表中最後一個單詞的下面,而不是按字母順序排列。例如,如果我輸入「蘋果」,則該單詞應該放在「麪包」之上,而放在「牛奶」之下。

我的第二個問題是我的列表中的項目數的總計。當我創建一個新列表並且每次添加新項目時,我的總數都應該顯示我應用於列表的項目數量,但是當我測試它時,每次只顯示數字1。

我該如何解決這些問題?

另外我怎樣才能從數組/列表中刪除項目? 我希望能夠從列表中選擇一個項目(複製&將其粘貼到輸入框中),當我單擊刪除btn時,該項目將從列表中刪除。

這裏是我的代碼:

addItem_btn.addEventListener(MouseEvent.CLICK, AddItem); 
function AddItem(e:MouseEvent):void { 
    var totalItems:int; 
    totalItems = int(input_txt.text); 
    totalItems += 1; 
    totalItems_txt.text = totalItems.toString(); 

    var newItem:Array = new Array(); 
    newItem[0] = input_txt.text; 
    newItem.sort(Array.CASEINSENSITIVE); 
    input_txt.text = ""; 
    for (var i:int = 0; i<1; i++) { 
     output_txt.appendText(newItem[i] + "\n"); 
    } 
} 

回答

0

您的代碼不工作,因爲你有一些小問題。

您用來存儲項目的數組應該是全局變量,並且每次只需將新項目添加到該數組時,就可以對它進行排序並在List控件中顯示其內容,例如當然,對於項目號碼,您可以使用它length屬性,讓你的代碼可以是這樣的:

var items:Array = []; 

addItem_btn.addEventListener(MouseEvent.CLICK, AddItem); 
function AddItem(e:MouseEvent): void 
{ 
    if(input_txt.text != ''){ 
     items.push({label: input_txt.text, data: items.length}); 
     items.sortOn('label', Array.CASEINSENSITIVE); 
     list.removeAll(); 
     list.dataProvider = new DataProvider(items); 
    } 
    totalItems_txt.text = items.length.toString(); 
} 

list這裏可以是List控制手動插入到舞臺或創建通過這樣的代碼,之後導入fl.controls.List等級:

var list:List = new List(); 
addChild(list); 

欲瞭解更多有關如何使用陣列,一起來看看:

希望能有所幫助。