Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-12-2004, 11:41   #1 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
Array.sort muckt im Flash-6-Player

habe gerade ein Problem mit Array.sort, ich muss gerade was für Flash 6.0.0.0 machen und die sort Funktion spinnt, wenn ich ihr eine Sortierfunktion übergebe. F7 und neuere F6 Versionen zeigen die Korrekte reihenfolge nur der erste F6 Player spinnt hier meine Fkt:


Das Problem ist nicht das Array.sort nicht richtig sortiert, sondern das es im f6 player die einträge vertauscht werden obwohl sie garnicht vertauscht werden müssen.
ActionScript:
  1. queue = new Array();
  2. queue.push({name:"a",value:5});
  3. queue.push({name:"b",value:5});
  4. queue.push({name:"c",value:5});
  5. queue.push({name:"d",value:5});
  6. queue.push({name:"e",value:5});
  7.  
  8. function sortOnPriority ():Void
  9. {
  10.     queue.sort(    function (a,b)
  11.                     {
  12.                         if (a.value >= b.value)
  13.                         {
  14.                             return  -1;
  15.                         }
  16.                         else if (a.value < b.value)
  17.                         {
  18.                             return  1;
  19.                         }
  20.                         else
  21.                         {
  22.                             return 0;
  23.                         }
  24.                     }
  25.                 );
  26. }
  27.  
  28. function showQueue(){
  29.     for (var i=0;i<queue.length;i++) {
  30.         txt.text +=(queue[i].name + " - " + queue[i].value) + newline;
  31.     }
  32. }
  33. showQueue();
  34. txt.text += "-----" + newline;
  35. sortOnPriority();
  36. showQueue();
  37. txt.text += "-----" + newline;
  38. queue.shift();
  39. sortOnPriority();
  40. showQueue();
  41. txt.text += "-----" + newline;
  42. queue.shift();
  43. sortOnPriority();
  44. showQueue();
  45. txt.text += "-----" + newline;
  46. queue.shift();
  47. sortOnPriority();
  48. showQueue();

einfach textfeld erstellen txt nennen und im 6,0,0,0 Player testen, der spinnt

ausgabe im F7

ActionScript:
  1. a - 5
  2. b - 5
  3. c - 5
  4. d - 5
  5. e - 5
  6. -----
  7. a - 5
  8. b - 5
  9. c - 5
  10. d - 5
  11. e - 5
  12. -----
  13. b - 5
  14. c - 5
  15. d - 5
  16. e - 5
  17. -----
  18. c - 5
  19. d - 5
  20. e - 5
  21. -----
  22. d - 5
  23. e - 5

im F6

ActionScript:
  1. a - 5
  2. b - 5
  3. c - 5
  4. d - 5
  5. e - 5
  6. -----
  7. a - 5
  8. e - 5
  9. d - 5
  10. c - 5
  11. b - 5
  12. -----
  13. e - 5
  14. b - 5
  15. c - 5
  16. d - 5
  17. -----
  18. b - 5
  19. d - 5
  20. c - 5
  21. -----
  22. d - 5
  23. c - 5
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 22-12-2004, 13:57   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Quicksort ist bekannt dafür, dass er auf sortierten Daten nicht so gut arbeitet. Anscheinend haben die MMs das Problem in F7 irgendwie berücksichtigt. Wenn du zusaetzlich zur Priorität noch ein anderes Ordnungskriterium (z.B. den Namen oder einen Timestamp) brauchst, musst du es in dein Objekt einbauen und zusaetzlich danach sortieren.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 22-12-2004, 16:23   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
• -1, falls A in der sortierten Folge vor B aufgeführt werden soll
• 0, wenn A = B
• 1, falls A in der sortierten Folge hinter B aufgeführt werden soll

du gibst im ja extra an, das er tauschen soll (somit wäre der fehler eher in 7 als in 6):
if (a.value >= b.value) { return -1; }
deshalb wird das da auch nie benützt:
else { return 0; }


versuchs mal so:
if (a.value > b.value) { return -1; }
else if (a.value < b.value) { return 1; }
else { return 0; }

(hab keinen alten f6 player zum testen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-12-2004 um 16:30 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 22-12-2004, 16:27   #4 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
thx

hatte vorher auch auch nur größer-als drinne und da ging es nicht, habs jetzt so gelöst wie bokel es auch gesagt hat, hab meinen Objekten IDs gegeben und sortiere jetzt zusätzlich nach denen. Jetzt klappt auch alles...
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 22-12-2004, 16:57   #5 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
oh ja, hgseib hat gute Augen, ">=" ist natürlich quatschikowski , > wäre richtig.

r.
bokel 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 11:51 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele