Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-04-2006, 13:07   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 25
Mein Script macht mir Angst...

Liebe Leut´,

habe hier ein Script erstellt, das wird mittlerweile so lang, dass sich mir die Stirn runzelt.

Ich schätze, dass es noch die eine oder andere Möglichkeit gibt, es zu verschlanken, doch bin nicht allzu fit in AS. Vielleicht muss ich auch noch mal logisches Denken üben

Guckt sich das mal jemand an? Alle Tipps sind willkommen... Vielen Dank!

Code:
// Funktion: Einige Elemente zunächst ausblenden
function ausblenden() {
	// Feedback-Ausgabefeld 
	ausgabe_ta._visible = false;
	// Weiter-Button
	weiter_btn._visible = false;
	// Icons
	falsch_mc._visible = false;
	richtig_mc._visible = false;
}
ausblenden();
// Zwei Arrays für die Speicherung der Instanznamen richtig oder falsch ausgefüllter Eingabefelder
var richtigeFelder:Array = new Array();
var falscheFelder:Array = new Array();
// Zeicheneingabe auf Ziffern beschränken
for (var h:Number = 0; h<alleFelder.length; h++) {
	alleFelder[h].restrict = "0-9";
}
// Eingetragene Summen formatieren
Number.prototype.format = function(nr, pt) {
	str="", s, v=this.toString();
	while (s=v.substr(-nr)) {
		v = v.substr(0, -nr);
		str = (v.length != 0 ? pt : "")+s+str;
	}
	return str;
};
ASSetPropFlags(Number.prototype, "format", 1, true);
function formatieren(instanzName:Object, variable:String) {
	if (variable != undefined) {
		variableAlsZahl = Number(variable);
		variablenZahlFormatiert = variableAlsZahl.format(3, ".");
		instanzName.text = variablenZahlFormatiert+",-";
	}
}
// Funktion für Auswertung der Eingaben, die Zuweisung von Instanznamen zum Richtig- oder Falsch-Array
function felderArraysFuellen() {
	// Arrays zunächst leeren
	richtigeFelder.length = 0;
	falscheFelder.length = 0;
	// Textfeld-Eingaben mit Variablenwerten vergleichen und Instanznamen entsprechend einem Array zuweisen
	var i:Number = 0;
	var ii:Number = 0;
	// ----- Aufgabe / Zeile 1 -----
	// Wenn Frame 1...
	if (this._currentframe == 1) {
		// Wenn richtige Eingabe in Textfeld...
		if (eingabeVierEins_txt.text == "" || eingabeVierEins_txt.text == 0) {
			// ... Eingabefeld-Instanznamen dem Richtig-Array zuweisen.
			richtigeFelder[i] = eingabeVierEins_txt;
			// Eingabe formatieren
			formatieren(eingabeVierEins_txt, vierEins);
			// Zähler hochsetzen, damit nächster Instanzname in nächste Stelle des Arrays gesetzt wird
			i += 1;
		} else {
			// Ansonsten Eingabefeld-Instanznamen dem Falsch-Array zuweisen und Zähler hochsetzen
			falscheFelder[ii] = eingabeVierEins_txt;
			ii += 1;
		}
		if (eingabeFuenfEins_txt.text == 30000) {
			richtigeFelder[i] = eingabeFuenfEins_txt;
			formatieren(eingabeFuenfEins_txt, fuenfEins);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeFuenfEins_txt;
			ii += 1;
		}
		if (eingabeSechsEins_txt.text == "" || eingabeSechsEins_txt.text == 0) {
			richtigeFelder[i] = eingabeSechsEins_txt;
			formatieren(eingabeSechsEins_txt, sechsEins);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeSechsEins_txt;
			ii += 1;
		}
		if (eingabeSiebenEins_txt.text == 30000) {
			richtigeFelder[i] = eingabeSiebenEins_txt;
			formatieren(eingabeSiebenEins_txt, siebenEins);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeSiebenEins_txt;
			ii += 1;
		}
		if (eingabeAchtEins_txt.text == 370000) {
			richtigeFelder[i] = eingabeAchtEins_txt;
			formatieren(eingabeAchtEins_txt, achtEins);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeAchtEins_txt;
			ii += 1;
		}
	}
	// ----- Aufgabe / Zeile 2 -----                                                                
	if (this._currentframe == 2) {
		if (eingabeVierZwei_txt.text == 45000) {
			richtigeFelder[i] = eingabeVierZwei_txt;
			formatieren(eingabeVierZwei_txt, vierZwei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeVierZwei_txt;
			ii += 1;
		}
		if (eingabeFuenfZwei_txt.text == "" || eingabeFuenfZwei_txt.text == 0) {
			richtigeFelder[i] = eingabeFuenfZwei_txt;
			formatieren(eingabeFuenfZwei_txt, fuenfZwei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeFuenfZwei_txt;
			ii += 1;
		}
		if (eingabeSechsZwei_txt.text == 45000) {
			richtigeFelder[i] = eingabeSechsZwei_txt;
			formatieren(eingabeSechsZwei_txt, sechsZwei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeSechsZwei_txt;
			ii += 1;
		}
		if (eingabeSiebenZwei_txt.text == "" || eingabeSiebenZwei_txt.text == 0) {
			richtigeFelder[i] = eingabeSiebenZwei_txt;
			formatieren(eingabeSiebenZwei_txt, siebenZwei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeSiebenZwei_txt;
			ii += 1;
		}
		if (eingabeAchtZwei_txt.text == 325000) {
			richtigeFelder[i] = eingabeAchtZwei_txt;
			formatieren(eingabeAchtZwei_txt, achtZwei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeAchtZwei_txt;
			ii += 1;
		}
	}
	// ----- Aufgabe / Zeile 3 -----                                                                
	if (this._currentframe == 3) {
		if (eingabeVierDrei_txt.text == "" || eingabeVierDrei_txt.text == 0) {
			richtigeFelder[i] = eingabeVierDrei_txt;
			formatieren(eingabeVierDrei_txt, vierDrei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeVierDrei_txt;
			ii += 1;
		}
		if (eingabeFuenfDrei_txt.text == 50300) {
			richtigeFelder[i] = eingabeFuenfDrei_txt;
			formatieren(eingabeFuenfDrei_txt, fuenfDrei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeFuenfDrei_txt;
			ii += 1;
		}
		if (eingabeSechsDrei_txt.text == "" || eingabeSechsDrei_txt.text == 0) {
			richtigeFelder[i] = eingabeSechsDrei_txt;
			formatieren(eingabeSechsDrei_txt, sechsDrei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeSechsDrei_txt;
			ii += 1;
		}
		if (eingabeSiebenDrei_txt.text == 80300) {
			richtigeFelder[i] = eingabeSiebenDrei_txt;
			formatieren(eingabeSiebenDrei_txt, siebenDrei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeSiebenDrei_txt;
			ii += 1;
		}
		if (eingabeAchtDrei_txt.text == 274700) {
			richtigeFelder[i] = eingabeAchtDrei_txt;
			formatieren(eingabeAchtDrei_txt, achtDrei);
			i += 1;
		} else {
			falscheFelder[ii] = eingabeAchtDrei_txt;
			ii += 1;
		}
	}
}
// Funktion: Korrekt ausgefüllte Textfelder bekommen weißen Hintergrund
function feedbackPositiv(j:Number) {
	richtigeFelder[j].background = true;
	richtigeFelder[j].backgroundColor = 0xFFFFFF;
}
// Funktion: Falsch ausgefüllte Textfelder dürfen keinen Hintergrund haben
function feedbackNegativ(k:Number) {
	falscheFelder[k].background = false;
}
// Ereignis Buttonklick "Eingaben auswerten"
auswerten_btn.onRelease = function() {
	// Ausgabetextfeld sichtbar machen
	ausgabe_ta._visible = true;
	// Funktionsaufruf: Die beiden Arrays mit Eingabefeld-Instanznamen füllen
	felderArraysFuellen();
	// Funktionsaufruf: Hintergrund der Textfelder setzen
	for (var j:Number = 0; j<richtigeFelder.length; j++) {
		feedbackPositiv(j);
	}
	for (var k:Number = 0; k<falscheFelder.length; k++) {
		feedbackNegativ(k);
	}
	// Wenn fünf richtige, also ganze Zeile/Aufgabe richtig...
	if (richtigeFelder.length == 5) {
		// Feedback ausgeben
		ausgabe_ta.text = "<b>Richtig!</b><br>Klicken Sie oben auf \"Nächster Buchungssatz\"";
		// Aufgaben-Textfeld ausblenden
		aufgabe_txt._visible = false;
		// Icon und Weiter-Button einblenden 
		richtig_mc._visible = true;
		weiter_btn._visible = true;
		// ggf. falsch_mc-Icon ausblenden
		falsch_mc._visible = false;
	} else {
		// Feedback ausgeben
		ausgabe_ta.text = "<b>So stimmt es noch nicht...</b><br>Überprüfen und korrigieren Sie die Eingaben in den verbleibenden grauen Feldern und klicken Sie erneut auf \"Eingaben auswerten\".";
		// Icon einblenden
		falsch_mc._visible = true;
	}
};
weiter_btn.onRelease = function() {
	// Gehe zum nächsten Bild
	nextFrame();
	// Weiter-Button ausblenden
	ausblenden();
	// Aufgaben-Textfeld einblenden
	aufgabe_txt._visible = true;
};
stop();
highco ist offline   Mit Zitat antworten
Alt 28-04-2006, 07:04   #2 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 924
Du könntest vielleicht die grösseren Sachen in mehrere Funktionen aufteilen.
Das würde die Lesbarkeit eventuell erhöhen.

ActionScript:
  1. function zeigeAusgabeFeld(){
  2.         // Ausgabetextfeld sichtbar machen
  3.     ausgabe_ta._visible = true;
  4. }
  5.  
  6. function werteEingabenAus(){
  7.     felderArraysFuellen();
  8. }
  9.  
  10. function zeigePositivesFeedback(){
  11.     // Funktionsaufruf: Hintergrund der Textfelder setzen
  12.     for (var j:Number = 0; j<richtigeFelder.length; j++) {
  13.         feedbackPositiv(j);
  14.     }
  15. }
  16.  
  17. function zeigeNegativesFeedback(){
  18.     // Funktionsaufruf: Hintergrund der Textfelder setzen
  19.     for (var k:Number = 0; k<falscheFelder.length; k++) {
  20.         feedbackNegativ(k);
  21.     }
  22. }
  23.  
  24. function istAufgabeGeloest(){
  25.      return richtigeFelder.length == 5;
  26. }
  27.  
  28. function zeigePositivesGesamtFeedback(){
  29.     // Feedback ausgeben
  30.     ausgabe_ta.text = "<b>Richtig!</b><br>Klicken Sie oben auf \"Nächster Buchungssatz\"";
  31.     // Aufgaben-Textfeld ausblenden
  32.     aufgabe_txt._visible = false;
  33.     // Icon und Weiter-Button einblenden
  34.     richtig_mc._visible = true;
  35.     weiter_btn._visible = true;
  36.     // ggf. falsch_mc-Icon ausblenden
  37.     falsch_mc._visible = false;
  38. }
  39.  
  40. function zeigeNegativesGesamtFeedback(){
  41.     // Feedback ausgeben
  42.     ausgabe_ta.text = "<b>So stimmt es noch nicht...</b><br>Überprüfen und korrigieren Sie die Eingaben in den verbleibenden grauen Feldern und klicken Sie erneut auf \"Eingaben auswerten\".";
  43.     // Icon einblenden
  44.     falsch_mc._visible = true;
  45. }
  46.  
  47. function zeigeGesamtAuswertung(){
  48.     // Wenn fünf richtige, also ganze Zeile/Aufgabe richtig...
  49.     if ( istAufgabeGeloest()) {
  50.                 zeigePositivesGesamtFeedback();
  51.     } else {
  52.                 zeigeNegativesGesamtFeedback();
  53.     }
  54. }
  55.  
  56. function eingabenAuswerten() {
  57.         zeigeAusgabeFeld();
  58.         werteEingabenAus();
  59.         zeigePositivesFeedback();
  60.         zeigeNegativesFeedback();
  61.         zeigeGesamtAuswertung();
  62. };
  63.  
  64. // Ereignis Buttonklick "Eingaben auswerten"
  65. auswerten_btn.onRelease = eingabenAuswerten;

Das ist jetzt nur ein ungetestetes Beispiel, aber das Prinzip sollte klar werden. Die Funktionen werden kleiner und übersichtlicher. Und die Namen der Funktionen sagen dir, was sie eigentlich machen.

mfg. h
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Alt 28-04-2006, 09:29   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 25
super

hi,

vielen dank! da sind einige anregungen, die mir helfen.

beste grüße,
heiko
highco 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 22:56 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele