【发布时间】:2020-09-23 12:52:33
【问题描述】:
我有这样的代码,但不是真的,这是我的代码:
var c = document.getElementById ("screen");
var ctx = c.getContext ("2d");
var characterX = 0;
var characterY = 0;
var srcX;
var srcY;
var sheetHeight = 280;
var sheetWidth = 864;
var frameCount = 8;
var cols = 8;
var rows = 2;
var character = new Image;
character.src = "spritesheet.png";
var width = sheetWidth / cols;
var height = sheetHeight / rows;
var currentFrame = 0;
function updateFrame() {
currentFrame = ++currentFrame % cols;
srcX = currentFrame * width;
srcY = 0;
}
function drawCharacter() {
ctx.clearRect (0, 0, c.width, c.height);
updateFrame();
ctx.drawImage (character, srcX, srcY, width, height, characterX, characterY, width, height)
}
setInterval (function() {
drawCharacter();
}, 100);
function draw() {
requestAnimationFrame(draw);
}
requestAnimationFrame(draw);
基本上,当我运行此代码时,字符会立即绘制出来,我不明白,因为我没有调用 drawCharacter();在draw()中;然而,所以它不应该显示字符。如果我写这个
function draw() {
drawCharacter();
requestAnimationFrame(draw);
}
requestAnimationFrame(draw);
然后由于某种原因 setInterval 不再工作,所以字符运行得如此之快,谁能帮我解决这个问题?
【问题讨论】:
标签: javascript animation requestanimationframe sprite-sheet