Javascript THREE.js-未捕获类型错误
我正在学习使用Web GL和THREE.js 我在YouTube上学习了一个教程,结果得到了下面的代码。此代码应显示一个立方体和一个轴。然而,当我试图显示包含此代码的页面时,我得到了一个Javascript错误。错误状态为: 未捕获类型错误:this.updateMorphTargets不是函数 我不确定我做错了什么,但我希望这里熟悉THREE.js的人能帮我解决这个问题。非常感谢你抽出时间Javascript THREE.js-未捕获类型错误,javascript,three.js,Javascript,Three.js,我正在学习使用Web GL和THREE.js 我在YouTube上学习了一个教程,结果得到了下面的代码。此代码应显示一个立方体和一个轴。然而,当我试图显示包含此代码的页面时,我得到了一个Javascript错误。错误状态为: 未捕获类型错误:this.updateMorphTargets不是函数 我不确定我做错了什么,但我希望这里熟悉THREE.js的人能帮我解决这个问题。非常感谢你抽出时间 jQuery(document).ready( function($){ var scene
jQuery(document).ready( function($){
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight,.1, 500);
var renderer = new THREE.WebGLRenderer();
renderer.setClearColor(0x000000);
renderer.setSize(window.innerWidth, window.innerHeight);
var axis = new THREE.AxisHelper(10);
scene.add(axis);
var cubeGeometry = new THREE.BoxGeometry(5, 5, 5);
var cubeMaterial = new THREE.MeshBasicMaterial({color: 0xdddddd, wireframe:true});
var cube = THREE.Mesh(cubeGeometry, cubeMaterial);
cube.position.x = 0;
cube.position.y = 0;
cube.position.z = 0;
scene.add(cube);
camera.position.x = 40;
camera.position.y = 40;
camera.position.z = 40;
camera.lookAt(scene.position);
$('#webgl-container').append(renderer.domElement);
renderer.render(scene, camera);
});
您输入了一个简单的打字错误,忘记了
Three.MESH
之前的new
操作符,因此应该是:
var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
新的
new
操作符是一件大事,没有它,THREE.Mesh
不再是一个构造函数,而是一个普通函数。这会导致函数内的This
引用三个
命名空间对象本身,而不是新创建的网格
对象。THREE
命名空间对象没有updateMorphTarget()
方法,因此出现错误 查看错误的堆栈跟踪。它来自哪一行?当它试图调用this.updateMorphTargets()时,它来自three.js中的第16927行;这就是堆栈跟踪的来源吗?没有函数调用这个吗?你说:“三个对象没有updateMorphTarget()方法”,但你指的是三个命名空间对象。非常正确,当前的措辞可能会令人困惑。我已经编辑了答案,谢谢!精彩的观察!