2015-10-06 31 views
7

私はちょうどウェブGLを使用するように学んでいますし、THREE.jsTHREE.js - キャッチされない例外TypeError

は、私は、YouTubeのチュートリアルに続き、結果として、以下のコードになってしまいました。このコードは、立方体と軸を表示する必要があります。しかし、このコードを含むページを表示しようとすると、Javascriptエラーが発生します。エラー状態:

Uncaught TypeError: this.updateMorphTargets is not a function

私は私が間違って行っているが、THREE.jsに精通していた、ここで誰かが私を助けることができることを期待していたかわからないです。あなたのお時間をありがとうございました。

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); 

}); 
+0

エラーのスタックトレースを見てください。どのような線が由来していますか? –

+0

this.updateMorphTargets();を呼び出そうとすると、three.jsの行16927から来ています – Emberdyn

+0

スタックトレースの起点ですか?それを呼び出す機能はありませんか? –

答えて

11

あなたはThree.MESHnew演算子を忘れて、簡単なタイプミスをしなかったので、それは次のようになります。

var cube = new THREE.Mesh(cubeGeometry, cubeMaterial); 

newオペレータは大したことで、それなしでTHREE.Meshはもはやコンストラクタですが、通常の機能です。これにより、関数内のthisは、新しく作成されたMeshオブジェクトではなく、THREE名前空間オブジェクト自体を参照します。 THREE名前空間オブジェクトにはupdateMorphTarget()メソッドがないため、エラーです。

+0

あなたは言う:「THREEオブジェクトにはupdateMorphTarget()メソッドがありませんが、THREE名前空間オブジェクトを意味します。 – nbro

+0

本当に、現在の言い回しが混乱する可能性があります。私は答えを編集しました、ありがとう! –

関連する問題