worker使用问题
将游戏的物理系统放到worker中进行,游戏过程中会有点击事件生成新的物体,物体需要添加到worker的物理计算中。 所以游戏方即需要接受worker的数据也需要发送数据到worker(有点击事件,所以需要点击后即时响应生成一个新的使用物理的物体)。 官方demo不存在实时生成的效果,所以想问一下是否是我的使用方式不对。 目前直接在微信端模拟需要每帧获取数据的操作,代码如下 const update = () => {
var sendTime = Date.now()
test1++;
test2++;
if (worker) {
worker.terminate()
}
worker = wx.createWorker('workers/index.js')
worker.postMessage({
x: test1,
y: test2,
});
worker.onMessage(function (res) {
console.log('这是主线程打印的')
console.log(res)
console.log('间隔时间:', Date.now() - sendTime)
});
// console.log('当前dt时间:',sendTime)
// setTimeout(update, dt);
requestAnimationFrame(update)
}
worker端代码如下 worker.onMessage(function (res) {
console.log('这是worker内部线程打印的')
console.log(res)
let sum = add(res.x, res.y);
worker.postMessage({
sum: sum
})
});
function add(x, y) {
return x + y;
}
目前是疯狂警告,并且大概率上不会执行到worker的代码。 [图片]