我有一个数组缓冲区 - 名为MEM
- 大于画布宽度*高度尺寸。我想将 arrayBuffer 数据绘制到画布上。
imgData.data.set(...)
应该可以工作,因为 imgData.data 是一个 Uint8Array,它具有 .set 方法。它适用于 FireFox 和 Chrome,但在 IE 中我收到此错误:Object doesn't support this property or method: 'set'
初始化:
var MEM = new ArrayBuffer(2*1024*1024);
var canvas, ctx, imgData;
var init = function() {
canvas = document.getElementById('canvas');
ctx = canvas.getContext('2d');
imgData=ctx.createImageData(canvas.width, canvas.height);
repaint();
};
重绘功能:
var repaint = function() {
// .... //
imgData.data.set(new Uint8Array(MEM, 0, canvas.width*canvas.height*4));
ctx.putImageData(imgData, 0, 0);
requestAnimationFrame(repaint);
};
使用这段代码,它可以工作
if(window.CanvasPixelArray) {
CanvasPixelArray.prototype.set = function(arr) {
var l=this.length, i=0;
for(;i<l;i++) {
this[i] = arr[i];
}
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)