首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用OO Javascript、ThreeJS和ScrollMagic的网络工作者

使用OO Javascript、ThreeJS和ScrollMagic的网络工作者
EN

Stack Overflow用户
提问于 2015-08-07 22:56:11
回答 1查看 607关注 0票数 2

我正在开发一个个人网站,以结合Three.js和ScrollMagic与面向对象的Javascript。当用户滚动3d对象变换时。这一切都工作得很好,但有一个轻微的性能问题。为了改进这一点,我想把一些计算位置的loop/for函数移到一个web worker上(每当我调用一个循环函数时,滚动滞后)。

问题是我试图将类实例(THREE.PointCloud)的数组(512)传递给web worker。我似乎无法从web worker中的这些实例中获得任何有意义的完整属性。

首先,我只是试图将数组传递给worker,但得到了这个错误:'Uncaught : Failed to execute 'postMessage‘on 'Worker':无法克隆对象。’

然后我意识到我不能这样做,所以我使用了JSON.stringify()和JSON.Parse()。我可以得到数组的长度。但是,我无法获得每个实例的属性。

我想我需要使用ArrayBuffer?但是我不知道如何将我的实例数组转换为ArrayBuffer。有没有人?还是有一种更简单的方法来提高性能?

如果能帮上忙,我会很感激的。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-08-20 09:24:53

我想你可能是对的,你需要一个ArrayBuffer (或类似的)。我认为使用postMessage()并不能真正得到您想要的结果。因为在某些情况下,json (反)序列化过程相当耗时。

但你可能正在寻找的是“可转移的对象”。它不是克隆对象,而是更改所有者,因此不需要复制。

有相当多的地方在网上谈论转移对象,所以谷歌将是你的朋友。但是这里有一个https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31880821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档