JavaScript падает на отрисовке canvas - что делаю не так?
От: Basil2 Россия https://starostin.msk.ru
Дата: 25.02.19 16:26
Оценка:
С веб-сокета приходит сообщение, в нем M на N пикселей для отрисовки. Далее код такой:
function onOpen(this) {
    const canvas = <HTMLCanvasElement>document.getElementById("TheMap");
    canvas.width = window.innerWidth;
    canvas.height = window.innerWidth; // e.g. full screen square

    const ctx = canvas.getContext("2d");
    ctx.imageSmoothingEnabled = true;
  
    this.onmessage = function(event) {
        onMessage(canvas, ctx, event);
    }
}

function onMessage(canvas, ctx, event) {
    const reader = new FileReader();
    
    reader.onloadend = function(evt) {
        const data = <ArrayBuffer>reader.result;
        const array8 = new Uint8ClampedArray(data);
        PaintFrame(canvas, ctx, array8);
    };
    reader.readAsArrayBuffer(event.data);
}

function PaintFrame(canvas, ctx, data): void {
    const width = From2Bytes(data[0], data[1]);
    const height = From2Bytes(data[2], data[3]);
    const imageData = new ImageData(data.slice(4), width, height);

    canvas.width = width;
    canvas.height = height;
    ctx.putImageData(imageData, 0, 0);
}


Все это завернуто в PhoneGap и выложено как приложение. Говорят, что на старых планшетах оно через 2-3 минуты вылетает с ошибкой.

Куда копать??
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re: JavaScript падает на отрисовке canvas - что делаю не так?
От: sergeya Ниоткуда http://blogtani.ru
Дата: 26.02.19 09:10
Оценка: 4 (1)
Здравствуйте, Basil2, Вы писали:

У меня проект на cordova (тот же PhoneGap) тоже вылетал на старых устройствах через несколько минут интенсивной анимации.

Вылечилось после подключения плагина https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview
Таким образом у тебя в приложении всегда будет актуальная версия веб-контрола, не зависимо от версии, установленной в ОС.

Минусы — это плюс 30Мб к размеру приложения, плюс будут отдельные apk под разные платформы (armv7, x86)
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.