2017-01-22 69 views
1

目前,我正在嘗試製作遊戲,但遇到了一些問題。 其中之一是我必須單擊屏幕才能使箭頭控件工作。無論如何解決這個問題?(Actionscript 3.0)如何解決這個箭頭控制故障?

其次,箭頭鍵按預期工作,但WASD鍵不能。這是爲什麼?

private function key_down(event:KeyboardEvent): void{ 
     if(event.keyCode == Keyboard.LEFT || event.keyCode == 65){ 
      leftPressed=true; 
     } 
     if(event.keyCode == Keyboard.RIGHT || event.keyCode == 68){ 
      rightPressed=true; 
     } 
     if(event.keyCode == Keyboard.UP || event.keyCode == 87){ 
      upPressed=true; 
     } 
     if(event.keyCode == Keyboard.DOWN || event.keyCode == 83){ 
      downPressed=true; 
     } 
    } 
    private function key_up(event:KeyboardEvent): void{ 
     if(event.keyCode == Keyboard.LEFT || event.keyCode == 65){ 
      leftPressed=false; 
     } 
     if(event.keyCode == Keyboard.RIGHT || event.keyCode == 68){ 
      rightPressed=false; 
     } 
     if(event.keyCode == Keyboard.UP || event.keyCode == 87){ 
      upPressed=false; 
     } 
     if(event.keyCode == Keyboard.DOWN || event.keyCode == 83){ 
      downPressed=false; 
     } 
    } 

注:在代碼的另一部分,我定義了球員動作如何,如果leftPressed,rightPressed,downPressed和upPressed是真還是假。

+0

焦點:您需要將您的Flash對象集中在加載HTML頁面上:http://stackoverflow.com/questions/7921690/how-do-i-make-my-flash-object-get-focus-on-加載密鑰:您需要使用event.charCode而不是event.keyCode – Organis

+0

您的代碼對於我來說非常適合WASD和event.keyCode。顯然,keyboardEvent監聽器必須定位到舞臺。你能更具體地說明你的問題嗎? – Craig

+0

顯然,只有在我的電腦上,WASD鍵不起作用。當我嘗試在其他計算機上玩遊戲時,WASD鍵非常適用。這很奇怪。 –

回答

2

這裏是你的代碼,你應該在FLA文件直接測試的一個非常簡化的版本:

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown); 

var leftPressed:Boolean; 

function keydown(event:KeyboardEvent): void 
{ 
    //if(event.keyCode == Keyboard.LEFT || event.keyCode == 65) 
    if(event.keyCode == 65) 
    { 
     leftPressed=true; 
     trace('left Pressed'); 
    } 

} 

注意到我註釋掉的Keyboard.LEFT線,用線代替它只測試'a'鍵的 。這應該適用於您的系統。