Javascript Three.js对象定义未定义

Javascript Three.js对象定义未定义,javascript,three.js,webgl,Javascript,Three.js,Webgl,我正在学习一系列教程,遇到了一个我无法理解的错误 我知道这可能是因为我在IDE中的懒惰而导致我失明,IDE的语法错误有红色下划线,但我有点需要尽快完成 错误是 TypeError:Tetris.boundingBoxConfig未定义 file:///C:/Users/Timmy/Documents/Emergent%20Tech/Tetris/js/tetris.js 第127行 这里我定义了俄罗斯方块.boundingBoxConfig var boundingBoxConfig = {

我正在学习一系列教程,遇到了一个我无法理解的错误

我知道这可能是因为我在IDE中的懒惰而导致我失明,IDE的语法错误有红色下划线,但我有点需要尽快完成

错误是 TypeError:Tetris.boundingBoxConfig未定义 file:///C:/Users/Timmy/Documents/Emergent%20Tech/Tetris/js/tetris.js 第127行

这里我定义了俄罗斯方块.boundingBoxConfig

var boundingBoxConfig = {
    width: 360,
    height: 360,
    depth: 1200,
    splitX: 6,
    splitY: 6,
    splitZ: 20
  };

  Tetris.boundingBoxConfig = boundingBoxConfig;
这是第127行

mesh.position.x = (x - Tetris.boundingBoxConfig.splitX/2)*Tetris.blockSize + Tetris.blockSize/2;
如果你需要更多的代码让我知道,我会编辑。任何帮助都将不胜感激!请只提出建设性的批评

编辑俄罗斯方块对象的定义

var Tetris = {};
还有第二种建议的方法:

window.Tetris = window.Tetris || {};
但我真的不明白那是怎么回事

编辑2

不确定这是否有助于澄清问题

var boundingBox = new THREE.Mesh(
  new THREE.CubeGeometry(
    boundingBoxConfig.width, boundingBoxConfig.height, boundingBoxConfig.depth, 
    boundingBoxConfig.splitX, boundingBoxConfig.splitY,         boundingBoxConfig.splitZ), 
  new THREE.MeshBasicMaterial( { color: 0xffaa00, wireframe: true } )
);
Tetris.scene.add(boundingBox);

你能把你定义俄罗斯方块对象的代码包括进去吗?ie var Tetris blah blah blah

在您的俄罗斯方块功能中,尝试更改

Tetris.boundingBoxConfig=boundingBoxConfig

this.boundingBoxConfig={//your definition}


因此,您的财产成为公共财产。

结果表明,这是因为我在Firefox中使用了本地文件。我知道Chrome在从本地磁盘加载文件时存在安全问题,所以Firefox认为没有类似的问题,因为其他项目正在工作。我错了


教训:永远不要使用本地文件始终使用服务器。

很难给出确切的答案,但希望这能让您走上正确的道路:使用console.logdata;要在整个代码中输出tetris和tetris.boundingBoxConfig的值,请查看将其设置为null或其他值的位置。定义后立即检查以确保定义正确。这里还有一些关于JS中未定义错误的信息:console.logTetris.boundingBoxConfig;按预期输出每个变量,没有空值注释应作为注释发布,而不是答案。您好,谢谢您的答案,但我担心它不起作用