我对keyup和keydown功能非常好奇。
我想禁用2秒钟的密钥然后启用它们。
我已设置了一个功能setTimeout
,以确保在此功能continueExecution
下启用它。
问题是,我试图弄清楚如何禁用它。
我试过了e.preventDefault();
尝试发送假回来仍然没有运气。
我有什么遗失的吗?
事件处理程序:
var keysDown = {},
ignore = false,tId;
addEventListener("keydown", function(e) {
if (ignore) return false;
keysDown[e.keyCode] = true;
}, false);
addEventListener("keyup", function(e) {
if (ignore) return false;
delete keysDown[e.keyCode];
}, false);
功能:
function doStuff() {
hero.y = 0;
ignore=true;
tId = setTimeout(function() { ignore=false; continueExecution() }, 2000) //wait two seconds before continuing
}
function continueExecution()
{
hero.y = -281;
}
答案 0 :(得分:0)
尝试设置标记
// Handle keyboard controls
var keysDown = {},
ignore = false,tId;
addEventListener("keydown", function(e) {
if (ignore) return false;
keysDown[e.keyCode] = true;
}, false);
addEventListener("keyup", function(e) {
if (ignore) return false;
delete keysDown[e.keyCode];
}, false);
function doStuff() {
ignore = true;
tId = setTimeout(function() { ignore=false; continueExecution() }, 2000) //wait two seconds before continuing
}
答案 1 :(得分:0)
如果您使用jquery,您可以编写如下代码:
$("your_elem").on("keyup",function(){
$(this).off("keyup")
});
否则,如果您想要将其退回,则可以通过替换关闭 。
答案 2 :(得分:0)
您的eventListener函数不能是匿名的:
function keyDown(e) {
keysDown[e.keyCode] = true;
}
addEventListener("keydown",keyDown,false);
function keyUp (e) {
delete keysDown[e.keyCode];
}
addEventListener("keyup",keyUp,false);
现在您可以删除监听器:
removeEventListener("keyup",keyUp,false);
总数:
function keyDown(e) {
keysDown[e.keyCode] = true;
}
function keyUp (e) {
delete keysDown[e.keyCode];
}
function setEvents(){
addEventListener("keyup",keyUp,false);
addEventListener("keydown",keyDown,false);
}
setEvents()
function yieldEvents(time){
removeEventListener("keyup",keyUp,false);
removeEventListener("keydown",keyDown,false);
setTimeout(setEvents,time);
}
yieldEvents(2000);//e.g.