Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-07-2008, 21:34   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
Arrays und If-Abfrage

Hallo, ich hab folgende variablen:
runde, gesamt1, gesamt2, gesamt3, gesamt4, aktspieler

und folgende funktion:
PHP-Code:
function save() {
    
playerarray = new Array("1""2""3""4");
    for (
i=0i<playerarray.lengthi++) {
        if (
_root.aktspieler == [playerarray[i]]) {
            
_root["gesamt"+playerarray[i]] = _root["gesamt"+playerarray[i]]+_root.runde;
        }
        
_root.runde 0;
    }
    
naechster();

Was passieren soll, wenn funktion save ausgeführt wird:
Wenn spieler 1 an der reihe ist, also
PHP-Code:
_root.aktspieler=
dann soll
PHP-Code:
_root.gesamt1=_root.gesamt1+_root.runde 
passieren.
Wenn spieler 2 an der reihe ist, also
PHP-Code:
_root.aktspieler=
dann soll
PHP-Code:
_root.gesamt2=_root.gesamt2+_root.runde 
passieren.
und so weiter.
aber es tut sich absolut nix
ich nehme an es hat mit dem Array zu tun?
Bin für jede Hilfe dankbar!

gruß
real2k
Real2k ist offline   Mit Zitat antworten
Alt 06-07-2008, 21:41   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
== [playerarray[i]]

warum packst du das in eckige klammern?
mit eckigen klammern erstellt man ein array.
du testest, ob _root.aktspieler ein array ist.

und deine for-schleife macht wenig sinn!?
Code:
for (i=0; i<playerarray.length; i++) { 
  if (_root.aktspieler == [playerarray[i]]) { 
    _root["gesamt"+playerarray[i]] = _root["gesamt"+playerarray[i]]+_root.runde; 
  } 
  _root.runde = 0; 
}
kannst du ersetzen mit:
_root["gesamt"+ _root.aktspieler] += _root.runde;
_root.runde = 0;
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (06-07-2008 um 21:44 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 06-07-2008, 21:43   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
hmm joa. nun geht es, aber nur für spieler 1
das verwirrt ja erstrecht..

edit: die variable "runde" zählt für alle spieler einen bestimmten erreichten wert für diese eine runde aus. also das ist keine variable die immer um +1 nach oben geht.

Geändert von Real2k (06-07-2008 um 21:47 Uhr)
Real2k ist offline   Mit Zitat antworten
Alt 06-07-2008, 21:47   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
playerarray = new Array("1", "2", "3", "4");

anführungszeichen ist text und keine zahl.

edit: ist mir persönlich wurscht. du addierst "runde" nur zu einem spieler, zum aktspieler.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (06-07-2008 um 21:50 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 06-07-2008, 21:59   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
hier mal was ich machen will:
funktioniert einwandfrei, ist aber halt viel zu lange.

PHP-Code:
function save() {
    if(
_root.aktspieler==1){
        
_root.gesamt1=_root.gesamt1+_root.runde;
    }
    if(
_root.aktspieler==2){
        
_root.gesamt2=_root.gesamt2+_root.runde;
    }
    if(
_root.aktspieler==3){
        
_root.gesamt3=_root.gesamt3+_root.runde;
    }
    if(
_root.aktspieler==4){
        
_root.gesamt4=_root.gesamt4+_root.runde;
    }
    
naechster();

Real2k ist offline   Mit Zitat antworten
Alt 06-07-2008, 22:04   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
du hast eine for-schleife für alle
und mit deinem if-test filterst du einen einzigen davon heraus.

das ist wiedersprüchlich!

entweder es soll für alle sein, dann lass deinen if-test weg
oder es ist nur für einen, dann lass deine for-schleife weg
Code:
function save() {
  for (i=0; i<playerarray.length; i++) { 
    _root["gesamt"+i] += _root.runde; 
  }
  _root.runde = 0; 
  naechster(); 
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (06-07-2008 um 22:06 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 06-07-2008, 22:20   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2003
Beiträge: 230
PHP-Code:
function save() {
  for (
i=0i<5i++) { 
    
_root["gesamt"+i] += _root.runde
  }
  
_root.runde 0
  
naechster(); 

dann doch gleich so, oder?
Real2k ist offline   Mit Zitat antworten
Alt 06-07-2008, 22:37   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
jain.
absolute werte sind immer schlecht!
zum einen, was bedeutet die 5 und dann, was ist wenn sich die 5 mal ändert? (im quellcode kommt die 5 vielleicht hundert mal vor, welche davon wären dann zu ändern?)


besser wäre z.b.:
spieleranzahl=5;
bzw. ginge auch:
spieleranzahl=playerarray.length;
...
for (i=0; i< spieleranzahl; i++) {

nach der bezeichnung spieleranzahl kann man gut suchen, jeder versteht sofort um was es geht und man kanns einfach ändern.


ach so:
und programmierer beginnen immer mit 0 zu zählen ;-)
also
runde, gesamt0, gesamt1, gesamt2, gesamt3, aktspieler
weil man so die laufvariablen direkt als indexzähler benützen kann.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (06-07-2008 um 22:46 Uhr)
hgseib 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 13:11 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele