2017-01-22 31 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'键的 。这应该适用于您的系统。