Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-01-2004, 16:46   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 90
Denkproblem

Hallo,

folgendes problem quält mich:

ich habe 4 spieler die in einem anderen Spiel schon Punkte erreicht haben. Jetzt möchte ich diese im Frame 1 eingeben und im Frame 2 sollen die Spieler mit Ihren Punkten sortiert werden. (links der mit den wenigsten und rechts der mit den meisten)
Es kann auch vorkommen, dass 2 oder mehr Spieler die selbe Punktzahl haben. (dann nacheinander)

Ich habe schon etwas vorbereitet, nur jetzt geht es nicht weiter.
habe für jeden Spieler für den 1 Frame ein dyn. Namensfeld und ein dyn. Punktefeld erstellt und übernehme diese in den 2.. Kann mir jemand bei der Funktion für den 1. Frame helfen?

fla liegt anbei

Danke
Angehängte Dateien
Dateityp: zip player2.zip (5,6 KB, 4x aufgerufen)
rainman ist offline   Mit Zitat antworten
Alt 07-01-2004, 18:43   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 90
Ich schreibs mal anders. Vielleicht wird es da für euch verständlicher.

Frame1:

Punkte werden eingetragen:
punktet1 hat 15
punktet2 hat 20
punktet3 hat 12
punktet4 hat 7

Ich suche eine Funktion welche mir das Team ermittelt mit den wenigsten Punkten und es der variable punktet1neu zuweist. usw. Die Teamnamen müssen ebenfalls mit verschoben werden.

Damit ich in Frame 2 die Reihenfolge neu festlegen kann.

ActionScript:
  1. if(punktet1 <= punktet2 && punktet1 <= punktet3 && punktet1 <= punktet4){
  2.     punktet1neu = punktet1;
  3.     name1neu = name1;
  4. }

so ist meine Denkweise aber weiter reicht es bei mir wahrscheinlich nicht.
Vielen Dank.

Geändert von rainman (07-01-2004 um 19:05 Uhr)
rainman ist offline   Mit Zitat antworten
Alt 07-01-2004, 20:21   #3 (permalink)
{flasher}
 
Benutzerbild von Majo
 
Registriert seit: Mar 2003
Ort: on water
Beiträge: 2.823
folgendes sollte dir weiterhelfen:

ActionScript:
  1. arr_spieler = ["2:spieler 1","5:spieler 2","3:spieler 3","6:spieler4","7:spieler 5","9:spieler 6","1:spieler 7"];
  2. function order (a, b) {
  3.    if (a > b) {
  4.      return -1;
  5.    } else if (a < b) {
  6.      return 1;
  7.    } else {
  8.      return 0;
  9.    }
  10.  }
  11. arr_endstand = arr_spieler.sort(order);
  12. for(i=0;i<=arr_endstand.length-1;i++){
  13.     _root.createTextField("anzeige"+i,i,1,10*i,200,20);
  14.     _root["anzeige"+i].text = arr_endstand[i].slice(2)+" hat : "+arr_endstand[i].slice(0,1)+" Punkte erreicht.";
  15. }
__________________
hang loose
Majo ist offline   Mit Zitat antworten
Alt 07-01-2004, 20:51   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 90
ach du meine nase. soweit bin ich noch gar nicht.

wie muß ich das und wo einbinden?

hatte jetzt was mit math.min getestet um so immer den kleinsten Punktestand auszuschließen.

das funktioniert auch, es sei denn der niedrigste punktestand ist mehrmals vorhanden und dieser fall muß auch berücksichtigt werden.
Da soll nämlich der zuerst gefundene wert als kleinster gelten.

Kann mann das auch in eine funktion packen?
rainman ist offline   Mit Zitat antworten
Alt 07-01-2004, 20:58   #5 (permalink)
{flasher}
 
Benutzerbild von Majo
 
Registriert seit: Mar 2003
Ort: on water
Beiträge: 2.823
ist schon mit drin....bei gleicher punktzahl gehts alphabetisch

wenn du nicht klar kommst, poste mal deine fla
__________________
hang loose
Majo ist offline   Mit Zitat antworten
Alt 07-01-2004, 21:05   #6 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
<ot>

hi@froind majo

(wünsch dir noch was )

</ot>



sorry für's ot
warrantmaster ist offline   Mit Zitat antworten
Alt 08-01-2004, 07:13   #7 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 90
die fla ist ganz oben.
wie kann ich meine variablen in das script einbauen?
Danke
rainman ist offline   Mit Zitat antworten
Alt 08-01-2004, 07:33   #8 (permalink)
r0b
Neuer User
 
Benutzerbild von r0b
 
Registriert seit: Feb 2002
Ort: Hamburg
Beiträge: 1.281
Ich denke Majo's Ansatz ist schon sehr gut, aber dir fehlt wohl eine kleine Erklärung was er da genau macht.
Im Prinzip ist es bei 4 Zahlen/Punkteständen schwierig das mit if < oder > zu checken. Deshalb nutzt Majo ein Array. Alle 4 Punktestände ins Array, und dann wird mit Array.sort() sortiert.

So...

Damit aber die Verknüpfung: Spieler -> Punktestand nicht verloren geht, wird an Stelle der 4 Zahlen im ersten Array nun jeweils pro Spieler ein 2tes Array eingefügt.

also:
ActionScript:
  1. // Punkte, Name
  2. player1 = new Array ( 1000 , "SpielerName");
  3. player2 = new Array ( 2000 , "SpielerName");
  4. player3 = new Array ( 3000 , "SpielerName");
  5. player4 = new Array ( 4000 , "SpielerName");
  6.  
  7. arrAllPlayers = new Array (player1 , player2 , player3 , player4 );
Wenn du jetzt das Array: arrAllPlayers sortierst - der Score steht vorne - sollten die Spieler in richtiger Reihenfolge sein.

Hoffe das hat dir geholfen.

mfg

Robert
__________________
robertreich.de v4 | Pixelfonts & FlashSite Tutorial
Friends of ED - Byte Size Flash MX: Adventures in Optimization

"Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime."

Geändert von r0b (08-01-2004 um 07:34 Uhr)
r0b ist offline   Mit Zitat antworten
Alt 08-01-2004, 07:41   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 90
statts der punkte muss ich also meine var nehmen?
rainman ist offline   Mit Zitat antworten
Alt 08-01-2004, 07:52   #10 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 90
ActionScript:
  1. player1 = new Array ( "punktet1" , "namet1");
  2. player2 = new Array ( "punktet2" , "namet2");
  3. player3 = new Array ( "punktet3" , "namet3");
  4. player4 = new Array ( "punktet4" , "namet4");
  5. arrAllPlayers = new Array (player1 , player2 , player3 , player4 );
  6. function order (a, b) {
  7.         if (a > b) {
  8.                 return -1;
  9.         } else if (a < b) {
  10.                 return 1;
  11.         } else {
  12.                 return 0;
  13.         }
  14. }
  15. arr_endstand = arrAllPlayers.sort(order);
  16. for(i=0;i<=arr_endstand.length-1;i++){
  17.         _root.createTextField("anzeige"+i,i,1,10*i,200,20);
  18.         _root["anzeige"+i].text = arr_endstand[i].slice(2)+" hat : "+arr_endstand[i].slice(0,1)+" Punkte erreicht.";
  19. }

habe das script bis jetzt so abgeändert aber meine Variablen werden ignoriert, ( es steht: hat : punktet1 Punkte erreicht. )
ich raff das nicht ganz.
rainman ist offline   Mit Zitat antworten
Alt 08-01-2004, 07:59   #11 (permalink)
r0b
Neuer User
 
Benutzerbild von r0b
 
Registriert seit: Feb 2002
Ort: Hamburg
Beiträge: 1.281
Zitat:
Geschrieben von rainman
statts der punkte muss ich also meine var nehmen?
Hm... ja... oder nein...
Dein Ansatz:
ActionScript:
  1. var namet1 = "";
  2. var namet2 = "";
  3. var namet3 = "";
  4. var namet4 = "";
  5. var punktet1 = "";
  6. var punktet2 = "";
  7. var punktet3 = "";
  8. var punktet4 = "";
Jetzt mußt du nur noch diese Variablen in die Array's eintragen.
ActionScript:
  1. player1 = new Array (punktet1 , namet1);
  2. //...
  3.  
dann das Array arrAllPlayer sortieren. (siehe Majo)
Mit arrAllPlayer[0][0] bekommst du den Punktestand des ersten Spielers, mit arrAllPlayer[0][1] den dazugehörigen Namen.

mfg

Robert
__________________
robertreich.de v4 | Pixelfonts & FlashSite Tutorial
Friends of ED - Byte Size Flash MX: Adventures in Optimization

"Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime."
r0b ist offline   Mit Zitat antworten
Alt 08-01-2004, 08:01   #12 (permalink)
r0b
Neuer User
 
Benutzerbild von r0b
 
Registriert seit: Feb 2002
Ort: Hamburg
Beiträge: 1.281
Zitat:
Geschrieben von rainman
ActionScript:
  1. player1 = new Array ( punktet1 , namet1);

habe das script bis jetzt so abgeändert aber meine Variablen werden ignoriert, ( es steht: hat : punktet1 Punkte erreicht. )
ich raff das nicht ganz.
Mit "irgendwas" wird der Inhalt als String, also Text und nicht als Variable behandelt.

mfg

Robert
__________________
robertreich.de v4 | Pixelfonts & FlashSite Tutorial
Friends of ED - Byte Size Flash MX: Adventures in Optimization

"Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime."
r0b ist offline   Mit Zitat antworten
Alt 08-01-2004, 08:02   #13 (permalink)
{flasher}
 
Benutzerbild von Majo
 
Registriert seit: Mar 2003
Ort: on water
Beiträge: 2.823
habs dir mal fix verarbeitet....hoffe du wolltest das so haben
Angehängte Dateien
Dateityp: rar player2.rar (7,9 KB, 2x aufgerufen)
__________________
hang loose
Majo ist offline   Mit Zitat antworten
Alt 08-01-2004, 08:26   #14 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 90
wunderbar. so soll es sein. aber wenn der punktestand größer als 10 ist kommt eine 1. wie kann ich das abändern?
rainman ist offline   Mit Zitat antworten
Alt 10-01-2004, 14:50   #15 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 90
habe mal das script selbst geändert.
beide Ausgaben sind undefined woran kann das liegen?

ActionScript:
  1. if (punktet1 == ""){
  2.     punktet1 = 0;
  3.     }
  4. if (punktet2 == ""){
  5.     punktet2 = 0;
  6.     }
  7. if (punktet3 == ""){
  8.     punktet3 = 0;
  9.     }
  10. if (punktet4 == ""){
  11.     punktet4 = 0;
  12.     }
  13. punktet1 = Number(punktet1);
  14. punktet2 = Number(punktet2);
  15. punktet3 = Number(punktet3);
  16. punktet4 = Number(punktet4);
  17.  
  18. // Punkte, Name
  19. player1 = new Array (punktet1 , "namet1");
  20. player2 = new Array (punktet2 , "namet2");
  21. player3 = new Array (punktet3 , "namet3");
  22. player4 = new Array (punktet4 , "namet4");
  23. arrAllPlayers = new Array (player1 , player2 , player3 , player4 );
  24. function order (a, b) {
  25.         if (a > b) {
  26.                return -1;
  27.        } else if (a < b) {
  28.                 return 1;
  29.         } else {
  30.                 return 0;
  31.         }
  32. }
  33.  
  34. arr_endstand = arrAllPlayers.sort(order);
  35.  
  36. punktet1 = arrAllPlayer[0][0];
  37. namet1 = arrAllPlayer[0][1];
  38.  
  39. trace(punktet1);
  40. trace(namet1);
rainman 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:13 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele