<canvas id="canvas" width="1000" height="500" style="background:#333"></canvas>
//html代码
var canvas = document.getElementById('canvas'),
cvs = canvas.getContext('2d');
(function motion(){
cvs.clearRect(0,0,canvas.width,canvas.height);//为什么加上这条就无法显示图片了?
img();
console.log(1)
requestAnimationFrame(motion);
})();
function img(){
var Img = new Image();
Img.src = 'https://www.baidu.com/img/bd_logo1.png';
Img.onload = function(){
cvs.drawImage(Img,100,100);
};
};
img();
你的这个问题,是代码的问题。
首先,你要明确你的这几行代码的用意:
为什么你加了第一行代码就不显示图片?原因是:
img()函数中的
Img.src = 'https://www.baidu.com/img/bd_logo1.png';
是一个异步的过程因为有第四行代码调用motion,motion会一直执行,clearRect一直在清空canvas上的像素,而img()的异步下载图片还没有下载下来,就被clearRect给擦除掉了。
所以,图片一直显示不出来。
想让图片显示出来,可以把第四行代码去掉,或者把第一行去掉。
参考:
https://developer.mozilla.org...