Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在某些浏览器中渲染场景v71时出现三个JS问题_Javascript_Three.js - Fatal编程技术网

Javascript 在某些浏览器中渲染场景v71时出现三个JS问题

Javascript 在某些浏览器中渲染场景v71时出现三个JS问题,javascript,three.js,Javascript,Three.js,使用three.js v71,我尝试添加一个meshphong材质,并在添加材质帽后将其显示在屏幕上。当我尝试在ChromeV42.0(Linux)上渲染时,效果很好。但是当我尝试在ChromeV42.0上运行它时,我得到一个指向库文件的错误 未捕获类型错误:无法读取未定义的属性“长度” 当我在Firefox DE(v39)和Firefox SE(v37)上运行它时,我在同一个地方得到一个错误,并显示消息 TypeError:a.defaultAttributeValue[h]未定义 是因为js

使用three.js v71,我尝试添加一个meshphong材质,并在添加材质帽后将其显示在屏幕上。当我尝试在ChromeV42.0(Linux)上渲染时,效果很好。但是当我尝试在ChromeV42.0上运行它时,我得到一个指向库文件的错误

未捕获类型错误:无法读取未定义的属性“长度”

当我在Firefox DE(v39)和Firefox SE(v37)上运行它时,我在同一个地方得到一个错误,并显示消息

TypeError:a.defaultAttributeValue[h]未定义


是因为js代码中的同步问题(将属性分配给未定义的对象)吗?以及它如何在Linux浏览器上而不是在其他平台上正确呈现?

我通过对three.js库代码的一个小改动解决了这个问题

在three.js(v71)第20263行中,我将[key]包含在if条件中

} else if ( material.defaultAttributeValues[ key ] !== undefined ) {
0!==a.defaultAttributeValues[h]
同样,在three.min.js(v71)第443行中,我在if条件中包含了键[h]

} else if ( material.defaultAttributeValues[ key ] !== undefined ) {
0!==a.defaultAttributeValues[h]

这解决了问题,对象现在在两种浏览器中都能正确渲染。

纹理/模型的加载是异步的,因此可能在一台机器上有时间下载和使用资源,而在另一台机器上则没有时间。但如果不显示任何代码,就很难判断。发布与资产加载相关的代码。@gaitat-这是链接。TIA。--><代码>控件。不需要更新()。删除
needsUpdate
标志。为什么要设置两次材质?将相关代码粘贴到帖子正文中,并链接到一个实例。但首先,请使用three.js的非精简版本进行调试,并亲自调试代码。@WestLangley感谢您提供有关使用非精简代码进行调试的建议。这清楚地指出了问题所在。这真是个糟糕的主意。很可能,您的应用程序正在做一些不合适的事情。@WestLangley,是的,我不应该干预源代码,将进一步调试我的应用程序。再次感谢。