Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-02-2005, 11:54   #1 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
list nach namen sortieren lassen

hallo,
ich lese den inhalt einer textdatei in eine list-komponente ein... soweit so gut. Aber mein Problem ist, das ja selten etwas nach alphabet abgespeichert wird, ist alles kreuz und quer. funktioniert es, dass ich nach dem einlesen gleich die list-komponente nach namen sortieren lassen kann?
Movm ist offline   Mit Zitat antworten
Alt 07-02-2005, 12:00   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hi.

Ein Array bietet die Methoden zum sortieren.
Also am besten in ein Array einladen.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 07-02-2005, 12:43   #3 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
herzlichen dank für deine schnelle Antwort... aber ich weiß überhaupt nicht, wie ich da anfangen muss... so siehts aus, wie ich das in die list komponente lade
ActionScript:
  1. for (_root.a=1; _root.a<=_root.i; _root.a++) {
  2.             _level0.list.addItem({label:this["datenbank"+a]}); /*hier lade ich es in die list-komponente*/
  3.         }
wie muss ich das dann angehen?

hier hab ich nochmal die ganze fla mit den textdateien
www.ar-prod.de/download/list.zip

Geändert von Movm (07-02-2005 um 12:46 Uhr)
Movm ist offline   Mit Zitat antworten
Alt 07-02-2005, 12:51   #4 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Einfach statt in die List-Komponente zu packen,
erstmal in ein Array einfügen.
Dann das Array sortieren.

Schau Dir mal die Hilfe an: Array.push(); Array.sort()
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 09-02-2005, 20:51   #5 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
so hat gleich funktioniert... so sieht das ganze aus
ActionScript:
  1. var mein_array:Array = new Array();
  2.         for (a=1; a<=_root.i; a++) {
  3.             mein_array.push({inhalt:this["datenbank"+a]});
  4.            
  5.         }
  6.         mein_array.sortOn("inhalt", Array.CASEINSENSITIVE);
  7.         for (b=0, a=1; a<=_root.i; b++, a++) {
  8.             _level0.list.addItem({label:mein_array[b].inhalt});
  9.             trace(mein_array[b].inhalt);
  10.         }

und danach, wenn ich etwas hinzufügen will, lasse ich das ganze quasi nochmal durchlaufen... bloß leicht abgeändert. Aber er ignoriert die anderen einträge von datenbank1, datenbank2... und schreibt immer "undefind" hin... wo liegt der fehler?

ActionScript:
  1. list.removeAll();
  2.             var mein_array:Array = new Array();
  3.             mein_array.push({inhalt:eingabe.text});
  4.             for (a=1; a<=_root.i; a++) {
  5.                 mein_array.push({inhalt:this["datenbank"+a]});
  6.             }
  7.             mein_array.sortOn("inhalt", Array.CASEINSENSITIVE);
  8.             for (b=0, a=1; a<=_root.i; b++, a++) {
  9.                 _level0.list.addItem({label:mein_array[b].inhalt});
  10.                 trace(mein_array[b].inhalt);
  11.             }

ich hab das gesamte auch nochmal hochgeladen, dass man es sich mal besser anschaun kann www.ar-prod.de/download/list.zip
Movm ist offline   Mit Zitat antworten
Alt 11-02-2005, 14:16   #6 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
also ich bin das ganze nochmal durchgegangen... aber ich finde keinen fehler

was mir aufgefallen ist, dass das erste script, was ja funktioniert und das ganze zum ersten mal einläd in eine funktion geschrieben ist
Movm ist offline   Mit Zitat antworten
Alt 11-02-2005, 18:58   #7 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
hier ist nochmal der Quellcode... ich hab jetzt rausgefunden, dass es an dem liegt, dass der inhalt der variablen gar nicht mehr existiert... irgendwo werden die gelöscht?

ActionScript:
  1. function geladendatenbank(erfolgreich) {
  2.     if (erfolgreich) {
  3.         var mein_array:Array = new Array();
  4.         for (a=1; a<=_root.i; a++) {
  5.             mein_array.push({inhalt:this["datenbank"+a]});
  6.            
  7.         }
  8.         mein_array.sortOn("inhalt", Array.CASEINSENSITIVE);
  9.         for (b=0, a=1; a<=_root.i; b++, a++) {
  10.             _level0.list.addItem({label:mein_array[b].inhalt});
  11.             trace(mein_array[b].inhalt);
  12.         }
  13.     } else {
  14.         trace("Fehler beim Laden");
  15.     }
  16. }
  17. LadeObj2 = new LoadVars();
  18. LadeObj2.onLoad = geladendatenbank;
  19. LadeObj2.sendAndLoad("datenbank.txt", LadeObj2, "POST");
  20. eingabe.onKeyDown = function() {
  21.     if (Key.getCode() == Key.ENTER) {
  22.         if (eingabe.text == "") {
  23.         } else {
  24.             _root.i++;
  25.             list.removeAll();
  26.             var mein_array:Array = new Array();
  27.             mein_array.push({inhalt:eingabe.text});
  28.             for (a=1; a<=_root.i; a++) {
  29.                 mein_array.push({inhalt:this["datenbank"+a]}); //und hier liegt das Problem! datenbank lässt sich hier nicht mehr abfragen
  30.             }
  31.             mein_array.sortOn("inhalt", Array.CASEINSENSITIVE);
  32.             for (b=0, a=1; a<=_root.i; b++, a++) {
  33.                 _level0.list.addItem({label:mein_array[b].inhalt});
  34.                 trace(mein_array[b].inhalt);
  35.             }
  36.             Sender = new LoadVars();
  37.             Sender.datenbank = eingabe.text;
  38.             Sender.anzahl = _root.i;
  39.             Sender.datum = _root.datum;
  40.             Sender.sendAndLoad('senden.php', Sender, "POST");
  41.             eingabe.text = "";
  42.             anzahlausgabe = _root.i;
  43.         }
  44.     }
  45. };
  46. eingabe.onSetFocus = function() {
  47.     Key.addListener(eingabe);
  48. };
  49. eingabe.onKillFocus = function() {
  50.     Key.removeListener(eingabe);
  51. };

Geändert von Movm (11-02-2005 um 19:00 Uhr)
Movm ist offline   Mit Zitat antworten
Alt 11-02-2005, 19:19   #8 (permalink)
God made me funky..
 
Registriert seit: Apr 2003
Ort: Bremen
Beiträge: 1.067
Zitat Flashdoku:

List.sortItemsBy()
Verfügbarkeit
Flash Player 6 Version 79.

Edition
Flash MX 2004.

Verwendung
listInstance.sortItemsBy(fieldName, order)

Parameter
fieldName Ein String, der den Namen der Eigenschaft angibt, anhand derer die Sortierung durchgeführt werden soll. Normalerweise ist dieser Wert label oder data.

order Ein String, der angibt, ob die Elemente in aufsteigender (ASC) oder absteigender Reihenfolge (DESC) sortiert werden sollen.

Rückgaben
Keine.

Beschreibung
Methode; sortiert die Elemente in der Liste alphabetisch oder numerisch in der angegebenen Reihenfolge anhand des angegebenen Parameters fieldName. Wenn die durch fieldName bezeichneten Elemente Textstrings und Ganzzahlen enthalten, werden die Elemente mit den Ganzzahlen zuerst aufgelistet. Der Parameter fieldName ist normalerweise label oder data, Sie können jedoch einen beliebigen Grunddatenwert angeben.

Beispiel
Der folgende Code sortiert die Elemente in der Liste surnameMenu in aufsteigender Reihenfolge nach den Bezeichnungen der Listenelemente:

nachnameMenue.sortItemsBy("label", "ASC");

Siehe auch
List.sortItems()
__________________
Kunst ist in erster Linie eine Frage der Form und nicht des Inhalts
Paul Rand
e2e4 ist offline   Mit Zitat antworten
Alt 11-02-2005, 19:25   #9 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
...
EDIT: ahhh danke... so hab ich auch nicht gedacht, dass ich nur noch die list durchsortieren lasse... dankeschön

Geändert von Movm (11-02-2005 um 19:35 Uhr)
Movm ist offline   Mit Zitat antworten
Alt 11-02-2005, 19:52   #10 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
also es würde zwar funktionieren... aber ich lass die liste später im array auch nach ner zahl sortieren, die auch in der text datei gespeichert ist und das kann ich nur über ein array lösen... weiß denn keiner, wie ich das verhindern kann, dass die variablen nicht gelöscht werden und ich sie eben später dort noch abrufen kann?
Movm ist offline   Mit Zitat antworten
Alt 11-02-2005, 20:10   #11 (permalink)
God made me funky..
 
Registriert seit: Apr 2003
Ort: Bremen
Beiträge: 1.067
erstmal die aufgeräumte Variante

Das mit der Zahl hab ich eben erst gesehen, du kannst auch mit einer eigenen Funktion sortieren, schau dir dazu mal die Doku zu

listInstance.sortItems(compareFunc)

an...

Die Variable war nicht verfügbar weil du im Scope von eingabe warst, da existiert sie halt nicht...
ActionScript:
  1. LadeObj = new LoadVars();
  2. LadeObj.onLoad = geladenanzahl;
  3. LadeObj.sendAndLoad("anzahl.txt", LadeObj, "POST");
  4. function geladendatenbank(erfolgreich) {
  5.     if (erfolgreich) {
  6.         var mein_array:Array = new Array();
  7.         for (a=1; a<=_root.i; a++) {
  8.             _level0.list.addItem({label:this["datenbank"+a]});
  9.             _level0.list.sortItemsBy("label", "ASC");
  10.            
  11.         }
  12.     } else {
  13.         trace("Fehler beim Laden");
  14.     }
  15. }
  16. LadeObj2 = new LoadVars();
  17. LadeObj2.onLoad = geladendatenbank;
  18. LadeObj2.sendAndLoad("datenbank.txt", LadeObj2, "POST");
  19. function store() {
  20.     list.addItem({label:eingabe.text});
  21.     list.sortItemsBy("label", "ASC");
  22.     Sender = new LoadVars();
  23.     Sender.datenbank = eingabe.text;
  24.     Sender.anzahl = list.length;
  25.     Sender.datum = _root.datum;
  26.     Sender.sendAndLoad('senden.php', Sender, "POST");
  27.     eingabe.text = "";
  28.     anzahlausgabe = list.length;
  29. }
  30. eingabe.onKeyDown = function() {
  31.     if (Key.getCode() != Key.ENTER) { return; }
  32.     if (eingabe.text == "") { return; }
  33.     store();
  34. };
  35. eingabe.onSetFocus = function() {
  36.     Key.addListener(eingabe);
  37. };
  38. eingabe.onKillFocus = function() {
  39.     Key.removeListener(eingabe);
  40. };
  41. button.onPress = function() {
  42.     if (eingabe.text == "") { return; }
  43.     store();
  44. };
__________________
Kunst ist in erster Linie eine Frage der Form und nicht des Inhalts
Paul Rand
e2e4 ist offline   Mit Zitat antworten
Alt 11-02-2005, 22:29   #12 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
wow... vielen dank für deine hilfe!
ich weiß nicht... irgendwas mach ich noch falsch
ActionScript:
  1. _root.p = 0
  2. LadeObj = new LoadVars();
  3. LadeObj.onLoad = geladenanzahl;
  4. LadeObj.sendAndLoad("anzahl.txt", LadeObj, "POST");
  5. function geladendatenbank(erfolgreich) {
  6.     if (erfolgreich) {
  7.         var mein_array:Array = new Array();
  8.         for (a=1; a<=_root.i; a++) {
  9.             _level0.list.addItem({label:this["datenbank"+a], counter:this["counter"+a]});
  10.             _level0.list.sortItemsBy("label", "ASC");
  11.         }
  12.     } else {
  13.         trace("Fehler beim Laden");
  14.     }
  15. }
  16. LadeObj2 = new LoadVars();
  17. LadeObj2.onLoad = geladendatenbank;
  18. LadeObj2.sendAndLoad("datenbank.txt", LadeObj2, "POST");
  19. function store() {
  20.     _root.o = _root.i;
  21.     list.addItem({label:eingabe.text, counter:_root.o});
  22.     if (_root.p == 0) {
  23.         _level0.list.sortItemsBy("label", "ASC");
  24.     } else if (_root.p == 1) {
  25.         _level0.list.sortItemBy("counter", "DESC");
  26.     }
  27.     Sender = new LoadVars();
  28.     Sender.datenbank = eingabe.text;
  29.     Sender.anzahl = list.length;
  30.     Sender.datum = _root.datum;
  31.     Sender.sendAndLoad('senden.php', Sender, "POST");
  32.     eingabe.text = "";
  33.     anzahlausgabe = list.length;
  34. }
  35. eingabe.onKeyDown = function() {
  36.     if (Key.getCode() != Key.ENTER) {
  37.         return;
  38.     }
  39.     if (eingabe.text == "") {
  40.         return;
  41.     }
  42.     store();
  43. };
  44. eingabe.onSetFocus = function() {
  45.     Key.addListener(eingabe);
  46. };
  47. eingabe.onKillFocus = function() {
  48.     Key.removeListener(eingabe);
  49. };
  50. button.onPress = function() {
  51.     if (_root.p == 0) {
  52.         _level0.list.sortItemsBy("counter", "DESC");
  53.         _root.p = 1;
  54.     } else if (_root.p == 1) {
  55.         _level0.list.sortItemsBy("label", "ASC");
  56.         _root.p = 0;
  57.     }
  58. };
er sortiert zwar die standard buchstaben richtig... aber wenn ich etwas hinzu speichere, werden sie nur durcheinander geworfen, obwohl sie auch richtig abgespeichert werden... hier die fla www.ar-prod.de/download/list.zip

Geändert von Movm (11-02-2005 um 22:32 Uhr)
Movm ist offline   Mit Zitat antworten
Alt 12-02-2005, 09:04   #13 (permalink)
God made me funky..
 
Registriert seit: Apr 2003
Ort: Bremen
Beiträge: 1.067
Wenn ich mir das anschaue macht er genau das was ich erwarten würde. Gebe ich einen Text ein wird der eingefügt und die Sortierung stimmt.

Was du allerdings hiermit

ActionScript:
  1. _root.o = _root.i;
  2. list.addItem({label:eingabe.text, counter:_root.o});

bezwecken möchtest ist mir, in meinem morgendlichen Tran, nicht klar.

_root.o = _root.i macht ja so nicht wirklich Sinn, du könntest auch schreiben

ActionScript:
  1. list.addItem({label:eingabe.text, counter:_root.i});

_root.i ist bei dir ja immer gleich der Anzahl der geladenen Elemente, sprich in deinem Beispiel immer 8


also wird da immer ein

ActionScript:
  1. list.addItem({label:eingabe.text, counter:8});

draus.

Wenn du dann die Liste nach counter sortierst ist das Ergebniss was du siehst zwar richtig, aber wohl nicht das Gewünschte
__________________
Kunst ist in erster Linie eine Frage der Form und nicht des Inhalts
Paul Rand
e2e4 ist offline   Mit Zitat antworten
Alt 12-02-2005, 10:32   #14 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
oh die zeile hab ich jetzt auch entdeckt... habs schon ausgebessert... naja... übermüdung vielen dank für deine bemühungen!

ich habs jetzt nochmal probiert und hab gleichzeitig "counter" ausgeben lassen, wenn ich die einezelne Zeile auswähle und er speichert auch alles korrekt... das problem ist, dass er sie nicht direkt numerisch sortiert, sonder er sortiert sie nach strings... und dann kommt eben sowas raus: 1, 10, 11, 12, 13, 14, 2, 3, 4, 5
kann man da nicht genauso sortieren lassen, wie im Array?
Movm ist offline   Mit Zitat antworten
Alt 26-02-2005, 15:05   #15 (permalink)
... :)
 
Benutzerbild von Movm
 
Registriert seit: Apr 2004
Beiträge: 188
ok hab jetzt ein wenig rumgeschaut... irgendwie sollte das mit einem Vergleich funktionieren könne... wie würde das dann aussehen? in der Flash hilfe konnte ich was finden... aber aus dem werde ich irgendwie nicht schlau
Movm ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele