html5使用new image()创建的图片直接使用drawImage画的时候为空白
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2016-11-17 09:54:54
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
如下代码
var im=new Image(); im.src='./0.jpg'; canvas.drawImage(im, _x, 0, this.width, this.height, 0, 0, cw, ch);
下面代码运行后可能为空白,是因为new Image加载图片是异步加载的,图片还没有加载到浏览器下面的代码已经开始使用啦,
处理方法是等图片加载完后再调用下面的画图代码,要放到图片加载完成的回掉函数里面
如下写一个加载图片的带回调的函数,
function loadImage(url, callback) { //创建一个Image对象, var img = new Image(); img.src = url; // 如果图片已经存在于浏览器缓存,直接调用回调函数 if (img.complete) { callback.call(img); return; } //图片下载完毕时异步调用callback函数。 img.onload = function() { //将回调函数的this替换为Image对象 callback.call(img); }; }
使用方法:
loadImage('./0.jpg', function() { //this就是图片对象 ctx.drawImage(this, _x, 0, this.width, this.height, 0, 0, cw, ch); });