2017-03-01 21 views
1

我有以下功能:如何使用開關盒來實現它?

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(); 
     } 
    } 

如何使用開關的情況下我實現這個代碼?我只是無法弄清楚如何將條件語句e.shiftKey && e.keyCode傳遞給case語句。

+1

這看起來不像JavaScript。無論如何,告訴我們你試過了什麼。 – Xufox

+0

第一個'if'語句不依賴於'e.shiftKey'。 'if(e.keyCode === 27 || e.keyCode === 9)'就足夠了。 – Peter

+0

只是一個提示:您對LaunchInventory()的最終條件是多餘的。如果'(e.keyCode === 9 && e.shiftKey)'是真實的,那麼就'e.keyCode === 9'也是如此。 – AmericanUmlaut

回答

8

e.keyCode === 9 && e.shiftKey條件是完全冗餘的,如檢查e.keyCode === 9就足以輸入相同的條件。你可以放下它,這將使得使用開關盒非常簡單:

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

非常感謝。我完全忽略了它。感覺非常愚蠢! – zelda