【发布时间】:2019-07-12 08:59:57
【问题描述】:
20% 的时间图像显示,80% 的时间画布为空白(纯红色)。通过查看控制台,您可以看到图像在渲染函数中始终可用。
您可以通过点击Run code snippet 然后点击Hide Results 几次来复制它。
我在这里错过了什么?
如果您取消注释 window.requestAnimationFrame(render);,图像将 100% 显示。但显然我不想继续迭代静态图像。
const canvas = document.querySelector('canvas');
canvas.width = 500;
canvas.height = 500;
const context = canvas.getContext('2d');
const image = new Image();
image.onload = window.requestAnimationFrame(render);
image.src = 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/49240/2.jpg';
function render() {
console.log('render', image);
context.clearRect(0, 0, canvas.width, canvas.height);
context.drawImage(image, 0, 0, image.width, image.height);
// window.requestAnimationFrame(render);
}
canvas {
background: red;
}
<canvas></canvas>
【问题讨论】:
-
image.onload = render。requestAnimationFrame没有按照您的想法行事。
标签: javascript canvas html5-canvas drawimage