微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html5 – 如何在画布中强制显示更新

如果我很快地连续绘制画布.一个context.fillRect在一个循环中,浏览器似乎等待直到循环完成之前任何绘图显示(可能通过双缓冲)

有没有办法强制浏览器在每次绘制操作后显式或隐式地更新显示

解决方法

这不是真的因为没有看到结果的任何双重缓冲,而是因为Web浏览器中的 JavaScript是单线程的.如果您同样在JavaScript中创建一个循环,重复执行像MyDiv.style.top = parseInt(myDiv.style.top)1“px”;您将看到,即使在几秒钟内,浏览器中任何内容都不会明显改变,直到您的JavaScript执行完毕.

要绘制更改并在屏幕上查看结果,您需要使用setInterval或setTimeout来控制回浏览器,但要求在将来的某个时间运行代码.

例如,在画布上画一个新的随机随机彩色矩形15次:

var canvas = document.getElementsByTagName('canvas')[0];
var ctx = canvas.getContext('2d');
setInterval(function(){
  ctx.clearRect(0,canvas.width,canvas.height);
  var r=Math.random()*255,g=Math.random()*255,b=Math.random()*255;
  ctx.fillStyle = 'rgb('+r+','+g+','+b+')';
  var w=Math.random()*canvas.width,h=Math.random()*canvas.height;
  var x=Math.random()*(canvas.width-w),y=Math.random()*(canvas.height-h);
  ctx.fillRect(x,y,w,h);
},1000/15);

原文地址:https://www.jb51.cc/html5/168671.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。