Я пытаюсь использовать экспериментальную функцию Canvas - offscreenCanvas.
index.html
<html>
<body>
<canvas id="myCanvas" width="400" height="400"></canvas>
</body>
<script>
const canvas = document.querySelector('#myCanvas');
const offscreenCanvas = canvas.transferControlToOffscreen();
const worker = new Worker('./worker.js');
worker.postMessage({offscreenCanvas}, [offscreenCanvas]);
</script>
</html>
worker.js
onmessage = e => {
const ctx = e.data.offscreenCanvas.getContext('2d');
ctx.fillRect(0 , 0, 100 , 100);
ctx.commit();
}
Здесь все отлично работает, рисую на холсте простой прямоугольник. Теперь - как передать дополнительную информацию с помощью postMessage? Например - можно ли отправить объект с прямоугольными координатами?
Нравиться
const obj = {
x: 0,
y: 0,
}
Я попытался использовать переносимые объекты, создав новый Int8Array:
const bufferObj = new Int8Array([obj.x, obj.y]);
Честно говоря, я не знаю, как отправить его рабочему и прочитать из объекта события. Я думал о
worker.postMessage(offscreenCanvas, bufferObj, [offscreenCanvas, bufferObj]);
Но это вызывает ошибку. Значение с индексом 1 не имеет переносимого типа. Есть идеи, как это решить?