所以我正在尝试使用画布编写一个简单的精灵加载方法,并且我注意到刷新率很糟糕。这是我正在使用的绘制方法。
function DrawSprite(context,
drawX,
drawY,
drawH,
drawW,
spriteXIndex,
spriteYIndex,
spriteW,
spriteH,
image){
var imageObj = new Image();
imageObj.onload = function() {
//draw cropped image
var sourceX = (spriteXIndex * spriteW);
var sourceY = (spriteYIndex * spriteH);
context.drawImage(imageObj, sourceX, sourceY, spriteW, spriteH, drawX, drawY, drawW, drawH);
};
imageObj.src = image;
}
每当调用它时,我都会对图像进行非常明显的重绘。我已经考虑了几个解决方案,但我不确定实现它们的最佳方法。首先是双缓冲。但是除了创建第二个画布并将其绘制在下面并使用 z-index 处理交换之外,我不确定如何实现它。另一个是存储图像而不是每次我想绘制精灵时都重新创建它。我将首先尝试第二种方法并在启动程序之前预加载图像,但我希望输入有关处理此问题的最佳方法的输入。