我正在制作动画/游戏。
它已经有ifkeypressed
,您甚至可以输入密钥。
但是当我播放动画时,无论按哪个键,我都会按下它。
我想知道在按下 D 键时是否有办法运行某些东西。在此示例中,它将运行play();
。
我还需要w,a和s。
我的代码:
function keyReleased(key) {
event
}
P.S。 我确定并且我经历了w /我的原始代码,即使我将按键设置为“d”,即使我按下(例如,当我通过按下空格时)一个按键仍然可以运行它。
答案 0 :(得分:0)
您需要添加事件侦听器来跟踪键事件。在下面的示例中,我使用了keyup
,因为一旦密钥被释放,它就会运行。
在事件监听器的回调函数中,您将获得一个event
对象,您可以通过此对象检查名为keyCode
(或旧浏览器which
)的内容。键盘上的每个键都有一个映射号码,因此您可以追溯到是否传递了D
,W
,A
或S
并调用了不同的键基于此的方法。
我在下面编写了一些通用的面向对象代码,以展示如何实现这一目标。了解事件如何从addEventListener
回调传递到keyPressed
,如果代码与keyPressed
匹配,则moveRight
会运行68
的逻辑。
function GameName() {
// ... constructor stuff ...
// add keypressed method on keyup
document.addEventListener('keyup', function(event) {
this.keyPressed(event);
}.bind(this));
}
GameName.prototype.keyPressed = function(event) {
// browser compatibility check for event and event code
var e = event || window.event,
code = e.which || e.keyCode;
// If user pressed 'D' key (google for javascript key codes)
if (code === 68) {
this.moveRight();
}
}
GameName.prototype.moveRight = function(event) {
// user moves right
}
答案 1 :(得分:0)
您可以通过以下几种方式为特定键指定功能:
function play() {
alert("I'm playing!");
}
document.addEventListener("keydown", checkKeyPressed, false);
function checkKeyPressed(e) {
if (e.keyCode == 68) {
play();
}
}
或
function play() {
alert("I'm playing!");
}
document.onkeydown = function(e){
e = e || window.event;
var key = e.which || e.keyCode;
if(key == 68){
play();
}
}
或使用JQuery
function play() {
alert("I'm playing!");
}
$(document).keydown(function(e) {
if (e.keyCode == 68) {
play();
}
});
" w"," a"和" s"的关键代码分别是87,65和83。以下是所有代码的列表: https://stackoverflow.com/a/45534377/3080392