Relationale Operatoren in switch-Anweisung [Flash 10]
| Beiträge: 579 Wohnort: Halle Registriert: Apr 2005
| 11.11.2009, 12:20
Hallo zusammen,
ich bin grad dabei, eine "Digitaluhr" ähnlich der unter http://fun.sdinet.de/flash/hand.swf gezeigten zu entwickeln.
Dabei soll, wie unter dem Link zu sehen, jede Ziffer aus einem eigenen MovieClip bestehen. Ich habs zunächst mit einer Unmenge an if-Schleifen realisiert. Nun kam mir aber die Idee, das ganze mittels switch-/case-Anweisungen zu realisieren. Dabei stellte sich mir die Frage, ob man innerhalb einer solchen Anweisung auch mit relationalen Operatoren (z.B. < bzw. >) arbeiten kann.
Meine ersten Versuche haben ergeben, dass
ActionScript:1 2 3 4 5 6 7 8 9 | switch(sekunde) {
case <10:
sekunde1_mc.gotoAndStop(1);
break;
case <20:
sekunde1_mc.gotoAndStop(2);
break;
//u.s.w.
}
|
natürlich nicht funktioniert. Die Variable sekunde ist dabei vom Typ int.
Muss ich demnach also doch auf if-Schleifen zurückgreifen oder gibt es vielleicht irgendeine Variante, relationale Operatoren in switch-anweisungen zu verwenden?
Patrick_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0' | | | Beiträge: 1004 Registriert: Jul 2008
| 11.11.2009, 12:58
Hallo Patrick,
das geht höchstens so:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | switch (sekunde) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
trace("kleiner 10");
break;
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
trace("kleiner 20");
break;
}
|
Ist aber glaube ich keine wirkliche Alternative. Aber schau mal hier in diesen Beitrag, ist zwar AS2, aber so viele if-Bedingungen sind das gar nicht.
Grüße,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten. | | | Beiträge: 579 Wohnort: Halle Registriert: Apr 2005
Themenautor/in
| 11.11.2009, 13:29
Hallo Kerstin,
das ist natürlich auch eine gute Idee. Du lässt dir also die Stunden, Minuten und Sekunden als String ausgeben und zerlegst diese dann per substr in die einzelnen Ziffern. Dann wird natürlich auch die if-Schleifen-Struktur nicht so gigantisch. Ich hatte für jeden Zustand zwischen 00 und 60 (bei Minuten und Sekunden) bzw. zwischen 00 und 24 (bei Stunden) eine Schleife. Ich werde das ganze mal für mich anpassen.
Vielen Lieben Dank schonmal.
Patrick_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0' | | | Beiträge: 1004 Registriert: Jul 2008
| 11.11.2009, 18:31
Fast ;-)
Ich erklär es mal am Beispiel der Minuten:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | var jetzt:Date = new Date();
var minute:Number=jetzt.getMinutes();
if (minute==0) {
// Minute ist 0, also soll sie als "00" dargestellt werden
// die 0 befindet sich in dem MC mit den Zahlen auf Frame 10
minute1.gotoAndStop(10);
minute2.gotoAndStop(10);
} else if (minute>0 && minute<10) {
// Minute ist kleiner 10 und nicht 0, bspw. "07"
// im ersten MC die 0 anzeigen
minute1.gotoAndStop(10);
// im zweiten MC die Minute anzeigen, und da die Zahl 7 auf Frame 7 ist:
minute2.gotoAndStop(minute);
} else {
// Minute ist 10 oder größer, bspw. "37", Zahlen mittels substr teilen
// im ersten MC die 3 anzeigen
minute1.gotoAndStop(Number(String(minute).substr(0, 1)));
// ist die zweite Zahl eine 0, im zweiten MC die 0 (Frame 10) anzeigen, sonst die Minute
Number(String(minute).substr(1,1))==0 ? minute2.gotoAndStop(10):minute2.gotoAndStop(Number(String(minute).substr(1,1)));
}
|
Eigentlich ganz einfach ;-)
Grüße,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten. | | | Beiträge: 579 Wohnort: Halle Registriert: Apr 2005
Themenautor/in
| 12.11.2009, 08:42
Hallo Kerstin,
auf diese Weise hat sich mein Script von knapp 700 Zeilen auf 40 Zeilen verringert ;) Vielen Dank nochmal!!!
Patrick_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0' | |
| Ähnliche Beiträge zum Thema | 13.09.2021 - Willisquirion 02.11.2020 - frliberti |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|