利用this tutorial我试图通过使用indexedDB缓存来节省大网格的带宽。
所以在我正在做的加载器回调函数中......
object = new THREE.Mesh( geometry, material );
webkitIndexedDB.open("MyNewDB").onsuccess = function(event) {
window.db = event.srcElement.result;
window.db.setVersion("1.0").onsuccess = function(event) {
var objectStore = window.db.createObjectStore("meshes", { keyPath: "item_id" });
objectStore.add({item_id: 0, mesh: object}); // <= this is the crucial line
};
};
然而,将包含object
的对象添加到数据库的最后一行会导致以下错误。
Uncaught Error: DATA_CLONE_ERR: DOM Exception 25
我不确定这是什么意思但是必须有办法解决它吗?
答案 0 :(得分:4)
这意味着您的THREE.Mesh
object
格式不正确,但不会违反索引,唯一性或类似内容。当我尝试将具有未执行功能的对象存储为成员时,我看到了这个错误。
the spec的技术定义是:
内部结构化无法克隆存储的数据 克隆算法。
如果您正在尝试存储名称空间的对象状态,那么您就会被清除。如果你要存储普通数据,我会尝试对THREE.Mesh()对象进行深度复制,检查typeof
是否为'function。'
DATA_CLONE_ERR
。这就是你所看到的。