Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-10-2006, 14:44   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 65
Unhappy For Schleife - Status immer nur in ein Textfeld

Hallo zusammen,

ich habe da eine kleine Frage, womöglich ists nichts wildes und ich steh einfach nur aufm Schlauch.

Also ich habe eine for-Schleife gebaut siehe:


PHP-Code:
for (var 0g<positions.lengthg++){
    if (
button.hitTest(eval(positions[g]))) {    
        
statusmeldung 'Diese Position ist bereits besetzt, bitte wähle eine Andere!';
        
done.enabled false;
    } else {
        
done.enabled true;
        
statusmeldung '';
    }

Hierbei wird aus einem Array abgefragt ob der Button der gerade gedropped wurde einer Position aus dem Array (positions) entspricht. Wenn ja dann gib Statusmeldung aus und deaktiviere Button, wenn nicht dann ebent nicht.

So alles schön und gut funzt nur nicht ganz. Und zwar gibt er mir immer nur die Fehlermeldung des letzten Arrayelements aus bei allen anderen nicht.

Ich habe mir dann gedacht gut teste das mal mit mehreren Textfeldern und hau die auch in die for Schleife und siehe da es geht. Es geht halt nur nicht dass es immer nur in ein Textfeld kommt. Das selbe beim Button, es soll auch immer nur der eine Button aktiviert/deaktiviert werden.

Ich hoffe das hat jemand verstanden und würde mich über einen kleinen Denkanstoss freuen.

grüße
Darius

Geändert von AmeKi (22-10-2006 um 14:46 Uhr)
AmeKi ist offline   Mit Zitat antworten
Alt 22-10-2006, 15:04   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
habe nicht so ganz verstanden, was du da machen willst. jedenfalls:

statusmeldung = '...
du überschreibst immer direkt die statusmeldung.
somit wird am ende der for-schleife immer nur die meldung für den letzten button übrig bleiben.

sammle mal alle deine meldungen:
statusmeldung += '\r ...

breche die schleife ab, wenn du eine passende positon gefunden hast:
} else {
done.enabled = true;
break;
}


und allgemein: benütze mal den debugger (siehe meine signatur)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-10-2006 um 15:09 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 22-10-2006, 20:55   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 65
ne bringt leider nix.

Also was ich vor habe ist folgendes.
Auf einer kleinen Seite wird dynamisch ein Feld mit Quadraten erzeugt. Es sind 3x3 Quadrate also insgesamt 9 Felder. Diese Felder dienen allerdings nur als Platzhalter für einen MC. Man kann nun diesen MC auf eines dieser Felder per drapg&drop ziehen und dann klickt man auf einen Button und die Infomation wird in der Datenbank gespeichert. Es wird der MC Name und der Feldname auf dem der MC abgelegt wurde gespeichert.

Nun kann der nächste User auf dieser Seite den schon vorhanden MC sehen und noch einen auf ein anderes Feld setzen. Allerdings nur da wo noch Platz ist. Die bereits vergebenen Felder werden in dem vorhin erwähnten Array positions gespeichert. Nun brauche ich halte eine FUnktion um demUser mitzuteilen dass wenn er den MC auf ein Feld legen will auf dem bereits ein MC liegt er diesen nicht benutzen kann. Dafür verwende ich es bzw. habe ich vor.

Nun dachte ich mir da ich ja den Namen der vorhandenen Felder ja bereits aus der Datenbank habe und die auch gleich den erzeugten Feldern heissen könnte man einfach eine Abfrage machen in der der MC den man droppen kann einen Hittest macht auf eins der neun Felder. Wenn nun der Feldname einem Feldnamen aus dem Array gleicht kommt ein Fehler.

So nun hoffe ich dass die Funktion etwas deutlicher wird.

Nun funktioniert es ja dass er die Daten vergleicht aber aus dem Array liest er immer nur den letzten Wer aus trotz for-Schleife und das ist das Problem.

Hier noch was Code;

PHP-Code:
for (var 0j<=spaltenj++){
    for (var 
0i<=zeileni++){
            if (
button.hitTest(_root["field_"+i+'_'+j])) {
                for (var 
0g<positions.lengthg++){
                    if (
_root["field_"+i+'_'+j]._name == positions[g]){
                        
statusmeldung0 'Dieser Platz ist besetzt, bitte einen Anderen wählen!';
                    }
                    else {
                        
statusmeldung0 'OK!';
                    }
                    }                    
                
button._x _root["field_"+i+'_'+j]._x+15;
                
button._y _root["field_"+i+'_'+j]._y+15;
                
//statusmeldung0 = '';//_root["field_"+i+'_'+j];
                //done.enabled = true;
            
        
}
    }

Das Ganze ist eine Funktion und wird mit Click auf Button aufgerufen.

So nun habe ich 3 Felder auf denen bereits was vorhanden ist aber er zeigt nur bei einem an dass es besetzt ist sobald der MC (hier button) auf eines der anderen Felder kommt zeigt der an die sind noch frei. Und der Name des einen Feldes ist halt auch das letzte Element im Array.

So hoffe jemand liest sich das durch und kann mir helfen )

Danke und schönen Sonntagabend noch

grüße
Darius

Geändert von AmeKi (22-10-2006 um 20:57 Uhr)
AmeKi ist offline   Mit Zitat antworten
Alt 22-10-2006, 21:01   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Code:
statusmeldung0 = 'OK!';
for (var j = 0; j<=spalten; j++) {
  for (var i = 0; i<=zeilen; i++) {
    var h = _root["field_"+i+'_'+j];
    if (button.hitTest(h)) {
      for (var g = 0; g<positions.length; g++) {
        if (h._name == positions[g]) {
          statusmeldung0 = 'Dieser Platz ist besetzt, bitte einen Anderen wählen!';
          break; // <-- korrekter weisse
          // musst du hier komplett aus der aktuellen funktion aussteigen mit return
          // weil besetzt ist besetzt, was willst du danach noch testen?
        }
      }
      // und was fummelst du hier noch am button rum?
      button._x = h._x+15;
      button._y = h._y+15;
    }
  }
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-10-2006 um 21:08 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 23-10-2006, 07:51   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 65
hey super das geht. ists wirklich nur das break gewesen habs vorher net hinbekommen

an den buttons fummel ich rum weil ich die dann noch was ausrichten möchte da es passieren kann dass die mc's sich gegenseitig überschneiden und deswegen muss ich die dinger noch etwas ausrichten damits nicht passiert.

aber es geht nun vielen dank für die hilfe.

grüße
AmeKi 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 04:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele