2015-10-06 13 views
7

Ich lerne gerade zu verwenden, gefolgt Web GL und Three.jsThree.js - Uncaught Typeerror

ich ein Tutorial auf YouTube und als Folge mit dem Code unten gelandet. Dieser Code sollte einen Würfel und eine Achse anzeigen. Wenn ich jedoch versuche, die Seite mit diesem Code anzuzeigen, erhalte ich einen Javascript-Fehler. Der Fehler lautet:

Uncaught TypeError: this.updateMorphTargets is not a function

Ich bin nicht sicher, was ich falsch gemacht, aber hatte gehofft, dass jemand hier, der mit Three.js vertraut war mir helfen könnte. Vielen Dank für Ihre Zeit.

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

Schauen Sie sich die Stack-Trace des Fehlers an. Aus welcher Linie stammt er? –

+0

Es kommt von Zeile 16927 in three.js , wenn es versucht, dies aufzurufen. UpdateMorphTargets(); – Emberdyn

+0

Ist das der Ursprung des Stack-Trace? Es gibt keine Funktionen, die diesen anrufen? –

Antwort

11

Sie haben einen einfachen Tippfehler, bevor Three.MESH die new Betreiber zu vergessen, es sollte so sein:

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

Der new Operator ist eine große Sache, ohne dass es die THREE.Mesh ist nicht länger ein Konstruktor aber eine gewöhnliche Funktion. Dies bewirkt, dass this in der Funktion das Namespace-Objekt THREE selbst referenziert, im Gegensatz zu einem neu erstellten Objekt Mesh. Das Namespace-Objekt THREE hat keine updateMorphTarget()-Methode, daher der Fehler.

+0

Sie sagen: "Das THREE-Objekt hat keine updateMorphTarget() -Methode", aber Sie meinen das DREI Namespace-Objekt. – nbro

+0

Sehr wahr, die derzeitige Formulierung könnte verwirrend sein. Ich habe die Antwort bearbeitet, danke! –

Verwandte Themen