2017-03-01 2 views
1

Ich habe die folgende Funktion:Wie kann ich es mit Switch Case implementieren?

gameActions(e: KeyboardEvent) { 
     if (e.keyCode === 27 || e.keyCode === 9 || (e.keyCode === 9 && e.shiftKey)) { 
      this.LaunchInventory(); 
     } 
     else if (e.keyCode === 13) { //Enter 
      this.Shoot(); 
     } 
     else if (e.keyCode === 40) { //Down 
      this.Crouch(); 
     } 
     else if (e.keyCode === 38) { //Up 
      this.Jump(); 
     } 
    } 

Wie kann ich diesen Code implementieren Schaltergehäuse mit? Ich bin einfach nicht in der Lage herauszufinden, wie die bedingte Anweisung e.shiftKey && e.keyCode an die case-Anweisung übergeben werden.

+1

Dies sieht nicht wie JavaScript aus. Wie auch immer, zeig uns, was du probiert hast. – Xufox

+0

Die erste 'if'-Anweisung ist nicht abhängig von' e.shiftKey'. 'if (e.keyCode === 27 || e.keyCode === 9)' ist ausreichend. – Peter

+0

Nur ein Tipp: Ihre letzte Bedingung für LaunchInventory() ist redundant. Wenn '(e.keyCode === 9 && e.shiftKey)' wahr ist, dann ist auch nur 'e.keyCode === 9' wahr. – AmericanUmlaut

Antwort

8

Der e.keyCode === 9 && e.shiftKey Zustand ist vollständig redundant, da die Prüfung auf e.keyCode === 9 ausreichen würde, um denselben Zustand einzugeben. Sie könnten es einfach fallen lassen, was die Verwendung eines Switch-Case ziemlich einfach machen würde:

gameActions(e: KeyboardEvent) { 
    switch(e.keycode) { 
     case 27: 
     case 9: 
      this.LaunchInventory(); 
      break; 
     case 13: 
      this.Shoot(); 
      break; 
     case 40: 
      this.Crouch(); 
      break; 
     case 38: 
      this.Jump(); 
      break; 
    } 
+1

Vielen Dank. Ich habe es komplett übersehen. Fühlt sich so dumm! – zelda