代码以下列方式工作:
-按住拍摄/放下按钮可生成子弹和在画布上绘制/显示的炸弹,
-它始终以每秒刷新60次的速度执行函数绘制。
我想将sth设置为:
-setInterval(拍摄,1000);
-setInterval(drop,2000);
所以应该像这样:
-用户按下键时,会以1/2秒的间隔创建项目符号/炸弹
-这一切都应该在没有意识到密钥的情况下发生
下面我提供了示例代码:
let left = false;
let up = false;
let right = false;
let down = false;
let shoot = false;
let drop = false;
document.onkeydown = function (e) {
if (e.keyCode == 37) left = true;
if (e.keyCode == 38) up = true;
if (e.keyCode == 39) right = true;
if (e.keyCode == 40) down = true;
if (e.keyCode == 17) shoot = true;
if (e.keyCode == 32) drop = true;
e.preventDefault();
}
document.onkeyup = function (e) {
if (e.keyCode == 37) left = false;
if (e.keyCode == 38) up = false;
if (e.keyCode == 39) right = false;
if (e.keyCode == 40) down = false;
if (e.keyCode == 17) shoot = false;
if (e.keyCode == 32) drop = false;
e.preventDefault();
}
function draw() {
requestAnimationFrame(draw);
if (shoot) {
bullet = new Bullet(player.x - 3, player.y - 3, 6, 10)
bullets.push(bullet);
}
for (i = 0; i < bullets.length; i++) {
bullets[i].show();
bullets[i].move();
}
if (drop) {
bomb = new Bomb(player.x - 8, player.y + 50, 16, 1)
bombs.push(bomb);
}
for (i = 0; i < bombs.length; i++) {
bombs[i].show();
bombs[i].move();
}
}
requestAnimationFrame(draw);
远程服务器上的完整代码:
https://stacho163.000webhostapp.com
这是在我的代码中做到这一点的一种方式,还是我不得不更改按钮的工作方式?
如果有没有jQuery的解决方案,那就太好了。
e:检查了第一个技巧,但是在创建了第一个单个的项目符号/炸弹之后,它便像以前一样工作。
谢谢您的提示:)
答案 0 :(得分:2)
您应该设置某种等待变量,该变量表示当前已按下该键,并且不需要进行任何处理:
AutoMapper.Mapper.Initialize(c =>
{
c.AllowNullCollections = true;
});
这样,炸弹只会每1秒掉落一次。冲洗并重复:)