imageData установлен в InternetExplorer

У меня есть массив буферов по имени MEM - больше, чем ширина холста * высота по высоте. И я хотел бы нарисовать данные arrayBuffer на холсте.

imgData.data.set(...) должно работать, потому что imgData.data является массивом Uint8Array, который имеет.set hethod. Это работает в 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 ответ

Решение

С этим кодом все работает

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

        for(;i<l;i++) {
            this[i] = arr[i];
        }
    };
}
Другие вопросы по тегам