2015-09-09 37 views
0

林試圖讓蛇的兩個PLYER版本上運行,但我遇到麻煩第二蛇的工作,球員1次用W,A,S和d,玩家2使用箭頭鍵。有w,a,s和d的玩家1正在工作,玩家2的箭頭沒有。ActionScript 3的使用多的onkeydown /的onkeyup

的代碼看起來是這樣的:

function onKeyDown(event:KeyboardEvent):void{ 
     if(event.keyCode == Keyboard.A){ 
      SnakeDirection = "left"; 
     }else if (event.keyCode == Keyboard.D) { 
      SnakeDirection = "right"; 
     }else if (event.keyCode == Keyboard.W) { 
      SnakeDirection = "up"; 
     }else if (event.keyCode == Keyboard.S) { 
      SnakeDirection = "down"; 
     } 
    } 
    function onKeyUp(event:KeyboardEvent):void { 
     if(event.keyCode == Keyboard.A) { 
      SnakeDirection = ""; 
     }else if(event.keyCode == Keyboard.D) { 
      SnakeDirection = ""; 
     }else if(event.keyCode == Keyboard.W) { 
      SnakeDirection = ""; 
     }else if(event.keyCode == Keyboard.S){ 
      SnakeDirection = ""; 
     } 
    } 
/*  function onKeyDown(event:KeyboardEvent):void{ 
      if(event.keyCode == Keyboard.LEFT){ 
       Snake2Direction = "left"; 
      }else if (event.keyCode == Keyboard.RIGHT) { 
       Snake2Direction = "right"; 
      }else if (event.keyCode == Keyboard.UP) { 
       Snake2Direction = "up"; 
      }else if (event.keyCode == Keyboard.DOWN) { 
       Snake2Direction = "down"; 
      } 
     } 
     function onKeyUp(event:KeyboardEvent):void { 
      if(event.keyCode == Keyboard.LEFT) { 
       Snake2Direction = ""; 
      }else if(event.keyCode == Keyboard.RIGHT) { 
       Snake2Direction = ""; 
      }else if(event.keyCode == Keyboard.UP) { 
       Snake2Direction = ""; 
      }else if(event.keyCode == Keyboard.DOWN){ 
       Snake2Direction = ""; 
      } 
     }*/ 

的意見是有,因爲它打破了比賽,從我的理解是錯誤的,因爲我只能用一個的onkeyup /向下。如果是這樣的話,還有其他的方法嗎?

謝謝!

回答

0

你爲什麼要使用2個功能爲每個事件?如果你只是在同樣的函數中完成第二個球員的邏輯,那麼它會不會更簡單?它也處理第一個球員的邏輯?

像這樣:

function onKeyDown(event : KeyboardEvent) : void { 
     //handle player 1 
     if (event.keyCode == Keyboard.A) { 
      SnakeDirection = "left"; 
     } else if (event.keyCode == Keyboard.D) { 
      SnakeDirection = "right"; 
     } else if (event.keyCode == Keyboard.W) { 
      SnakeDirection = "up"; 
     } else if (event.keyCode == Keyboard.S) { 
      SnakeDirection = "down"; 
     } 
     //handle player 2 
     if (event.keyCode == Keyboard.LEFT) { 
      Snake2Direction = "left"; 
     } else if (event.keyCode == Keyboard.RIGHT) { 
      Snake2Direction = "right"; 
     } else if (event.keyCode == Keyboard.UP) { 
      Snake2Direction = "up"; 
     } else if (event.keyCode == Keyboard.DOWN) { 
      Snake2Direction = "down"; 
     } 
    } 

    function onKeyUp(event : KeyboardEvent) : void { 
     //handle player 1 
     if (event.keyCode == Keyboard.A || event.keyCode == Keyboard.D || event.keyCode == Keyboard.W || event.keyCode == Keyboard.S) { 
      SnakeDirection = ""; 
     } 
     //handle player 2 
     if (event.keyCode == Keyboard.LEFT ||event.keyCode == Keyboard.RIGHT || event.keyCode == Keyboard.UP || event.keyCode == Keyboard.DOWN) { 
      Snake2Direction = ""; 
     } 
    } 

請記住,你要保持如果塊用於分離的球員,這樣就可以同時獲得多個輸入。

另外,作爲一個側面說明,否則,如果在你的onKeyUp功能塊是不必要的。無論如何,他們都做同樣的事情。

+0

也從來沒有想到過使用相同的功能,非常感謝!我會在早上試試! –

相關問題