javascript - 防止 Canvas 在重画时闪烁?

标签 javascript jquery canvas

我目前正在进行这样的重绘:

这工作得很好,除了偶尔 Angular 色 Sprite 会闪烁。这种情况的发生足以造成相当大的烦恼。我应该如何更有效地做到这一点?我还尝试更改重绘频率。较高的频率加剧了问题,而较低的频率则由于图形原因不够快。

init()
{
//stuff
    return setInterval(draw,100);
}

function draw()
{
    drawBackground();
    character.draw(); //draws a sprite
}

//this function is called when character is created
Character.prototype.setImage = function ()
{
    this.avatar= new Image();
    this.avatar.onload=function(){
            this.imageLoaded=true;
    };
    this.avatar.src='/img/sprite.png';
}

Character.prototype.draw=function(ctx)
{  
    var imageW=this.imageW;
    var imageH=this.imageH;

    ctx.drawImage(avatar,20,20,imageW,imageH);

}

最佳答案

为什么每次绘制背景时都尝试下载背景图片?也许下一个代码更好:

var bg=null,ctxDrawInterval=-1;
init() {
  //stuff
  bg=new Image();
  bg.onload=function(){
    ctx.drawImage(bg,0,0,GAME_WIDTH,GAME_HEIGHT);
    ctxDrawInterval=setInterval(draw,100);
  }
  //bg.onerror=function(){
  //  what if error downloading?
  //}
  bg.src='img/background.png'; // must be placed after bg.onload
}

function draw() {
  drawBackground();
  character.draw(); //draws a sprite
}

function drawBackground() {
  ctx.drawImage(bg,0,0,GAME_WIDTH,GAME_HEIGHT);
}

关于javascript - 防止 Canvas 在重画时闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7495355/

相关文章:

javascript - 如何创建 Mongoose 架构,将输入保存为 mongodb 中的 html

javascript - 从模块返回数据以在 react 页面中呈现

python - Tkinter plt.figure() 不绘图,但Figure() 绘图

java - 投影鼠标坐标

javascript - Canvas 数据到网络 worker

javascript - 如何在 HTML 标签的开头附加图像?

javascript - Mongoose .js CastError : Cast to number failed for value "[object Object]" at path "undefined"

jquery - 如何删除 razor ASP.NET MVC 5 上以前的数据列表?

javascript - 一次又一次点击后添加/隐藏一个div

jquery - Bootstrap 多选 'No search Result message'