如何在动作脚本3中分配任何键?

时间:2013-08-12 22:36:13

标签: actionscript-3

您可以指定A键在我的Flash游戏中移动我的角色,如果可以的话?

     playerOne.y = mouseY;
}

function movePlayerTwo(evt:KeyboardEvent):void {
    if(evt.keyCode == Keyboard.UP) { playerTwo.y = playerTwo.y - 20; }
    if(evt.keyCode == Keyboard.DOWN) { playerTwo.y = playerTwo.y + 20; }
}

2 个答案:

答案 0 :(得分:0)

A键的ASCII值为65:

if(evt.keyCode === 65)
{
    // Do movement.
}

您可以查找其他人here

答案 1 :(得分:0)

在听众身上

stage.addEventListener(KeyboardEvent.KEY_DOWN, onDown);

stage.addEventListener(KeyboardEvent.KEY_UP, onUp);

如果按下任意键,你只需听。在处理程序onDown()和onUp()中,你需要检查是否按下了女巫键。通常它是通过一个开关完成的,以保持代码整洁。这是一个例子:

private function onDown(e:Event):void
{
   switch(e.keyCode)
   {
      case 65: // this is the keycode for key "a"
      keyAPressed = true;
      break;
   }
}

对于移动来说,制作一些变量是个好主意,比如

private var isMoving:Boolean = false;
private var leftPressed:Boolean = false;
private var rightPressed:Boolean = false;
private var goingLeft:Boolean = false;

有了这个,你可以通过这样的循环获得更好的控制:

private function movementLoop():void
{
   if (! isMoving)
   return; // if the char's not moving it's safe to return the function
   if (goingLeft)
   x -= movementSpeed;
   else
   x += movementSpeed;
}

您可以使用此网站检查每个按钮的keyCodes:http://www.kirupa.com/developer/as3/using_keyboard_as3.htm

从这个示例中可以看出,移动是在循环上处理的,可以通过计时器或ENTER_FRAME事件调用,而不是按下按钮。这很重要,原因很多,其中很少是:

  • 按住该键,您不会向移动命令发送垃圾邮件。
  • 您的键盘处理程序更小,更清晰,可以使用新的实现进行阅读和扩展
  • 您可以通过修改isMoving和方向变量
  • ,使用相同的方法进行NPC移动
  • 与上述相同,将此数据发送到多人游戏中的服务器
  • 如果左右按下,变量可以切换运动方向,而不是试图左右移动播放器。

希望我能回答你的问题。

祝你好运!