2016-04-03 2 views
0

Ich habe ein Shopping-List-Projekt, das ein Array mit Werten initialisiert und dem Benutzer dann das Hinzufügen und Entfernen von Elementen ermöglicht. Jedes Mal, wenn sich das Array ändert, sortiert es die Werte und zeigt sie im dynamischen Textfeld an.Actionscript 3 Array zeigt die Liste nicht in alphabetischer Reihenfolge an und die Gesamtzahl wird nicht korrekt angezeigt

ich bereits eine Liste von Text innerhalb des dynamischen Textfeld haben:

  • Brot
  • Hundefutter
  • Eier
  • Hamburger
  • Milch

Mein erster Ausgabe ist wenn ich ty Wenn Sie ein neues Element in das Eingabefeld eingeben und auf die Schaltfläche "Objekt hinzufügen" klicken, wird der Text unter dem letzten Wort in der Liste angezeigt und nicht alphabetisch eingefügt. Zum Beispiel, wenn ich "Apple" tippe, soll das Wort über "Brot" gehen, aber wird stattdessen unter "Milch" gelegt.

Meine zweite Ausgabe ist meine laufende Summe der Anzahl der Elemente in meiner Liste. Wenn ich eine neue Liste anlege und jedes Mal, wenn ich ein neues Element hinzufüge, sollte meine Gesamtanzahl die Anzahl der Elemente anzeigen, die ich auf die Liste angewendet habe, aber wenn ich es teste, wird jedes Mal nur die Zahl 1 angezeigt.

Wie kann ich diese beheben?

Wie kann ich auch Elemente aus dem Array/Liste entfernen? Ich möchte in der Lage sein, ein Element aus der Liste auszuwählen (kopieren Sie & fügen Sie es in das Eingabefeld) und wenn ich auf das Entfernen btn klicken, wird das Element aus der Liste entfernt.

Hier ist mein Code:

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"); 
    } 
} 

Antwort

0

Ihr Code funktioniert nicht, weil Sie ein paar kleine Probleme haben.

Das Array, das Sie zum Speichern Ihrer Elemente verwenden, sollte eine globale Variable sein. Jedes Mal, wenn Sie das neue Element zu diesem Array hinzufügen müssen, sortieren Sie es und zeigen seinen Inhalt in einem List Steuerelement an Kurs für die Einzelteilzahl, Sie seine length Eigenschaft verwenden können, so dass Ihr Code kann wie folgt sein:

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 hier kann eine manuell auf die Bühne eingefügt List Kontrolle sein oder über einen Code wie folgt erstellt, nach dem Import fl.controls.List Klasse:

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

Für mehr darüber, wie Arrays zu verwenden, werfen Sie einen Blick:

Hoffnung, die helfen kann.

Verwandte Themen