Flashhilfe.de - Flash Community

Relationale Operatoren in switch-Anweisung [Flash 10]

 


AntwortenRegistrieren Seite1  

Sleepingbeast#1
Benutzerbild von Sleepingbeast
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'
Kerstin77#2
Benutzerbild von Kerstin77
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,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
Sleepingbeast#3
Benutzerbild von Sleepingbeast
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'
Kerstin77#4
Benutzerbild von Kerstin77
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,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
Sleepingbeast#5
Benutzerbild von Sleepingbeast
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'

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de