Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-10-2004, 12:25   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2002
Ort: stuttgart
Beiträge: 113
der stinker erkennt meine zahlen trotz parseInt nicht!

moin!

daddel seit ner stunde rum und steh mächtig auf´m schlauch:
ich importier varis aus ner txt, pack sie in ein mehrdimensionales array
und will sie dann mit Array.NUMERIC sortieren lassen. funktionert auch,
aber leider sortiert er nur nach den ersten ziffern, sprich 99 ist größer als 1000. warum???

hier das script:

ActionScript:
  1. stop();
  2. variablenladen = new LoadVars();
  3. variablenladen.onLoad = function(erfolgreich) {
  4.     if (erfolgreich) {
  5.         contArray = [];
  6.         datenArray = this.daten.split("???");
  7.         for (var i = 0; i<datenArray.length; i++) {
  8.             contArray[i] = datenArray[i].split("//");   
  9.             contArray[i][0] = parseInt (contArray[i][0]);
  10.         }      
  11.     }
  12.     contArray.sort(Array.NUMERIC)
  13.     contArray.reverse ();
  14.     for (j=1;j<6;j++) {
  15.         _root["winner" add j] = contArray[j-1];
  16.     }
  17. };
  18. variablensenden = new LoadVars();
  19. variablenladen.load("hs.txt");


dachte eigentlich daß er mit contArray[i][0] = parseInt (contArray[i][0]);
die zahl sicher erkennt, tut er aber nicht, hab auch schon ein neues array erzeugt in dem dann die geparste ziffer direkt reinkam, selbes problem ...

weiß einer rat???

besten dank im voraus,

tom!
__________________
ActionScript:
  1. if ( you == have faith in yourself) {
  2.      _root.others.willFollow ();
  3. }
tomaj ist offline   Mit Zitat antworten
Alt 19-10-2004, 12:47   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
So is 100 größer als 99...
ActionScript:
  1. var a = [99, 100, 1, 2, 3, 4, 999];
  2. function numericSort(num1, num2) {
  3.     if (num1 < num2) {
  4.         return -1;
  5.     } else if (num1 > num2) {
  6.         return 1;
  7.     } else {
  8.         return 0;
  9.     }
  10. }
  11. trace(a.sort(numericSort));

btw was is denn das eigentlich:
contArray.sort(Array.NUMERIC);
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 19-10-2004, 12:53   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2002
Ort: stuttgart
Beiträge: 113
hi!

danke für deinen versuch! ich kenn den normalen vergleich, aber der hier soll innerhalb des arrays passieren da es sich um nen highscore handelt, und mit der zahl soll dann auch der name, also der zweite teil des arrays ausgegeben werden. array.sort (Array.NUMERIC) sortiert eigentlich ziffern innerhalb eines Arrays, genau was ich brauche, aber es tut nicht. ich hab das sort (Array.numeric) auch erst gestern das erste mal ausprobiert und es scheint ideal für diesen fall ... was nicht ganz koscher ist, ist daß er die sortier-funktion auf den ganzen array anwendet und ja nur der erste part ziffern sind. aber wie gesagt, von 0-9 funktioniert´s wunderbar ...

die txt sieht erstmal so aus: daten=1000//AAA???900//BBB???800//CCC???700//DDD???600//EEE???500//FFF???400//GGG???300//HHH???200//III???99//JJJ.

und unsortiert: contArray[0][0] = 1000
contArray[0][1] = AAA


wie bring ich das denn zusammen???? zur hülf!
__________________
ActionScript:
  1. if ( you == have faith in yourself) {
  2.      _root.others.willFollow ();
  3. }

Geändert von tomaj (19-10-2004 um 12:57 Uhr)
tomaj ist offline   Mit Zitat antworten
Alt 19-10-2004, 15:04   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2002
Ort: stuttgart
Beiträge: 113
... hab was gefunden ... aber was nu?

hi,

hab in der hilfe von mx2004 folgendes gefunden:

Numerische Felder werden so sortiert, als seien sie Strings. 100 kommt
demnach vor 99, weil "1" ein kleinerer Stringwert ist als "9".

das bezieht sich auf die sortier-option NUMERIC, heißt ich kann es nicht
einsetzen wenn die zahlen größer als 9 werden. wie bring ich dann aber die
nsortierfunktion dazu, die 2dimensionalen arrays nach ihrem ersten
wert zu sortieren??? ich glaub ich überseh was einfaches, aber ich steh echt
aufm schlauch ...
__________________
ActionScript:
  1. if ( you == have faith in yourself) {
  2.      _root.others.willFollow ();
  3. }
tomaj ist offline   Mit Zitat antworten
Alt 19-10-2004, 15:18   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2002
Ort: stuttgart
Beiträge: 113
geschafft!

danke an sonar! hab die methode jetzt doch eingebastelt und es funktionert ganz fantastisch, super. das problem war daß ich die inhalte der arrays direkt und ohne benennung verarbeiten wollte, aber das ist ja eigentlich wurscht, bzw ist es so eh besser zu handeln. falls es jemand interessert:

die txt-einträge sehen jetzt so aus:
daten=pointz:1000//player:AAA???pointz:900//player:BBB ...

ActionScript:
  1. stop();
  2. compareFunction = function (a, b) {
  3.     var x = parseInt( a.pointz);
  4.     var y = parseInt( b.pointz);
  5.     if (x > y) {
  6.         return 1;
  7.     }
  8.     else if (x < y) {
  9.         return -1;
  10.     } else {
  11.         return 0;
  12.     }
  13. };
  14. variablenladen = new LoadVars();
  15. variablenladen.onLoad = function(erfolgreich) {
  16.     if (erfolgreich) {
  17.         contArray = [];
  18.         datenArray = [];
  19.         datenArray = this.daten.split("???");
  20.         for (var i = 0; i<datenArray.length; i++) {
  21.             contArray[i] = datenArray[i].split("//");   
  22.         }      
  23.     }
  24.     contArray.sort (compareFunction);
  25.     for (j=1;j<6;j++) {
  26.         _root["winner" add j] = contArray[j-1];
  27.     }
  28. };
  29. variablensenden = new LoadVars();
  30. variablenladen.load("hs.txt");
__________________
ActionScript:
  1. if ( you == have faith in yourself) {
  2.      _root.others.willFollow ();
  3. }
tomaj ist offline   Mit Zitat antworten
Alt 19-10-2004, 15:25   #6 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Sowas in der Art hatte ich mir jetzt auch ausgedacht:
ActionScript:
  1. function numericSort(num1, num2) {
  2.     if (num1[0] < num2[0]) {
  3.         return -1;
  4.     } else if (num1[0] > num2[0]) {
  5.         return 1;
  6.     } else {
  7.         return 0;
  8.     }
  9. }
  10. //
  11. var daten = "1000//AAA???900//BBB???800//CCC???700//DDD???600//EEE???500//FFF???400//GGG???300//HHH???200//III???99//JJJ";
  12. daten = daten.split("???");
  13. for (var i in daten) {
  14.     daten[i] = daten[i].split("//");
  15.     daten[i][0] = Number(daten[i][0]);
  16. }
  17. trace(daten.sort(numericSort));
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar 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 02:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele