0
在畫布中,有一個圖像,它在箭頭鍵的事件上移動。 但它在Firefox中閃爍,並在Chrome和IE上正常工作。HTML5畫布圖像移動閃爍
我不想要一個解決方案,只清除畫布的一部分,因爲我還在畫布上添加了其他東西。
下面是我的代碼:
var
velY = 0,
velX = 0,
speed = 2,
friction = 0.90,
keys = [],
canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d"),
playerDirection="img/player/player_back.png";
function update() {
if (keys[38]) {
if (velY > -speed) {
velY--;
playerDirection="img/player/player_back.png";
}
}
if (keys[40]) {
if (velY < speed) {
velY++;
playerDirection="img/player/player_front.png";
}
}
if (keys[39]) {
if (velX < speed) {
velX++;
playerDirection="img/player/player_right.png";
}
}
if (keys[37]) {
if (velX > -speed) {
velX--;
playerDirection="img/player/player_left.png";
}
}
velY *= friction;
y += velY;
velX *= friction;
x += velX;
if (x >= canvas.width - player.width) {
x = canvas.width - player.width;
} else if (x <= 5) {
x = 5;
}
if (y > canvas.height - player.height) {
y = canvas.height - player.height;
} else if (y <= 5) {
y = 5;
}
ctx.clearRect(0, 0, canvas.width, canvas.height);
playerObj = new Image();
playerObj.onload = function()
{
ctx.drawImage(playerObj, x, y);
};
playerObj.src = playerDirection;
}
update();
function handlerKeyDown(e)
{
keys[e.keyCode] = true;
}
function handlerKeyUp(e) {
keys[e.keyCode] = false;
}
感謝adavance。
您每次更新都會加載圖像?你爲什麼不緩存它們?這可能有幫助。 – MaxArt 2014-09-19 09:53:33
我想通了,在Firefox的畫布圖像不要從緩存中加載。任何想法如何從緩存加載圖像? – 2014-09-19 09:54:54
不,你不能真正控制從Javascript。 *但是*您可以將'Image'對象存儲在一個數組中。 – MaxArt 2014-09-19 09:59:17