【发布时间】:2013-05-18 11:36:44
【问题描述】:
我正在尝试使用动作脚本 2.0 制作一个简单的平台游戏,但我在从键盘获取输入时遇到了问题。我有两个函数“myKeyDown”和“myKeyUp”,只要按下/释放一个键就会被调用。
keyListener.onKeyDown = function(){
myKeyDown();
}
keyListener.onKeyUp = function(){
myKeyUp();
}
函数使用 Key.getCode() 方法检查按下了哪个键。它适用于 myKeyDown,但适用于 myKeyUp。如果(例如)我先按 A(向左移动),然后按 W(跳跃),然后释放 W,然后释放 A,就会发生错误。玩家不会停止移动(即使这是你释放时应该发生的情况一)
我理解这里的问题。 Key.getcode 返回最后按下的键的代码,我想要的是最后释放的键的代码。我一直在寻找这样的功能几个小时,但我没有找到任何东西。
这是 myKeyDown 和 myKeyUp 函数的代码
function myKeyDown(){
//A
if(Key.getCode() == 65){
velX=-3;
}else
//D
if(Key.getCode() == 68){
velX=3;
}else
//W
if(Key.getCode() == 87){
if(isInAir == false){
jump();
}
}
}
function myKeyUp(){
//A
if(Key.getCode() == 65){
if(velX==-3){
velX=0;
}
}else
//D
if(Key.getCode() == 68){
if(velX==3){
velX=0;
}
}
}
【问题讨论】:
-
混合事件和轮询,总是有问题。即使您存储了它们键的状态,您也可以在事件处理程序触发时受到摆布。如果你 google actionscript 多个键,你会得到一些想法。
标签: actionscript-2 keycode keyrelease