2

试图将一个简单的对象添加到three.js场景中。我遇到了错误未捕获引用错误:未定义多维数据集,但对我来说似乎已经定义好了。我在这里做错了什么?

这是一个笨蛋

以下是相关的js:

//多维数据集多维数据集=函数(){var几何=新三。BoxGeometry(50、50、50);对于(var i=0;i<几何面长度;i+=2){var十六进制=数学随机数()*0xffffff;geometry.faces[i].color.setHex(十六进制);geometry.faces[i+1].color.setHex(十六进制);}var材料=新的三个。网格基本材质({vertexColors:THREE。FaceColors,透照:0.5});box=新的THREE。网格(几何体、材质);框位置y=25;}函数createCube(){cube=新立方体();scene.add(立方体);}

1个答案1

重置为默认值
1

有两件事是错的。

  • 您应该将立方体网格添加到场景中。所以不是box=新的THREE。网格(几何体、材质);返回箱=新的三个。网格(几何体、材质);

  • 定义函数后调用createCube()

4
  • 谢谢,你太棒了。为什么是返回需要?在我将其放入函数之前,代码在没有它的情况下工作,但现在除非它存在,否则它无法工作。 评论 2015年8月13日22:20
  • 不知道您以前做过什么,但WebGLRenderer不知道如何呈现函数。要渲染对象,需要网格对象。我想如果你想让Cube()成为一个类,你可以通过把this.mesh=新三个。网格(几何体、材质);然后添加立方网格到现场。这有意义吗?
    – 米尼尔
    评论 2015年8月13日22:31
  • 为了更清楚,在您提供的示例中,立方体网格位于cube对象的私有范围内。如果您在函数中声明它,而没有以某种方式返回它,则呈现程序无法访问它
    – 米尼尔
    评论 2015年8月13日22:39
  • 谢谢你,这是一个非常有用的解释。 评论 2015年8月13日23:29

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.