我为html5-canvas编写了一个简单的无库rotozoo,我想知道在使用getImageData之前让图像加载到画布的正确方法是什么?
var hc = document.getElementById("hiddenCanvas"); var hctx = hc.getContext("2d"); // Hidden canvas for imageload (hctx)
var imageObj = new Image(); imageObj.onload = function() { hctx.drawImage(this, 0, 0); }; imageObj.src = 'img/8.jpg';
alert("Click to start");
// This alert needs to be replaced with "hold-the-script-until-image-is-fully-loaded" or the image_data will be nothing but black.
var image_data = hctx.getImageData(0,0,1000,1000);
var rgba_byte_array = image_data.data; // image_data.data.length = 4000000
var loop = setInterval(loop,1000/30);
function loop()
{ ...
代码与警报一起使用,因为它会导致加载图像所需的“中断”。我希望不使用JQuery也不使用Ajax。
这里我直接在画布上绘图时使用imageObj.onload。可能不是正确的方法? 提前感谢您的反馈和解决方案。
答案 0 :(得分:0)
你应该把
var image_data = hctx.getImageData(0,0,1000,1000);
var rgba_byte_array = image_data.data; // image_data.data.length = 4000000
var loop = setInterval(loop,1000/30);
在imageObj.onload
函数内