在Internet Explorer中设置的imageData

时间:2014-02-27 07:53:42

标签: javascript html5 html5-canvas arraybuffer putimagedata

我有一个名为MEM的数组缓冲区 - 大于画布宽度*高度大小。我想将arrayBuffer数据绘制到画布上。

imgData.data.set(...)应该可以工作,因为imgData.data是一个Uint8Array,它有.set方法。它适用于FireFox和Chrome,但在IE中我收到此错误:Object doesn't support this property or method: 'set'

Initializaton:

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);
};

1 个答案:

答案 0 :(得分:4)

使用此代码,它可以正常工作

if(window.CanvasPixelArray) {
    CanvasPixelArray.prototype.set = function(arr) {
        var l=this.length, i=0;

        for(;i<l;i++) {
            this[i] = arr[i];
        }
    };
}