0
我想開發一個使用canavas,html5和javascript的遊戲。我的問題是我想每300毫秒在代碼中給出後自動觸發子彈below.But取決於關鍵press.Please幫助他們,而不是被炒魷魚自動發射子彈而不是取決於按鍵?
我的遊戲代碼如下:
<!DOCTYPE html>
<html>
<script src="jquery.js"></script>
<style>
#canvas{
border:inset 1px black;
}
</style>
<body>
<canvas id="canvas" width=400 height=300></canvas>
<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var ballX = 0;
var ballY = 270;
var bulletY=270
var bulletX=50;
draw();
bullet();
function bulletFire()
{
if(bulletY<0)
{
bulletY=270;
bullet();
}
else
bulletY-=10;
}
function draw() {
ctx.clearRect(0,0,400,300);
ctx.fillStyle="black"
ctx.beginPath();
ctx.fillRect(ballX, ballY,100,30);
ctx.closePath();
ctx.fill();
}
function bullet()
{
//ctx.clearRect(0,0,400,300);
ctx.beginPath();
ctx.fillRect(bulletX, bulletY,15,30);
ctx.closePath();
}
// Here we just handle command keys
function keyDownHandler(event) {
// get which key the user pressed
var key = event.which;
// Let keypress handle displayable characters
if (key > 46) {
return;
}
switch (key) {
case 37:if(ballX!=0)
// left key
{
// move the ball 1 left by subtracting 1 from ballX
ballX -= 4;
bulletX -=4;
}
break;
case 39:
// right key
if(ballX!=300)
// move the ball 1 right by adding 1 to ballX
{
ballX += 4;
bulletX +=4;
}
break;
default:
break;
}
// redraw everything
draw();
bullet();
window.setInterval(bulletFire,300);
}
//draw();
// Listen for when the user presses a key down
window.addEventListener("keydown", keyDownHandler, true);
</script>
</body>
</html>
你有你的keyDown處理程序中的計時器。 –