| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #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(); |
| | |
| | #2 (permalink) |
| Nagelneuer User 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:
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 |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |