2015-10-06 23 views
7

Tôi chỉ học cách sử dụng Web GL và THREE.jsTHREE.js - Uncaught TypeError

Tôi đã làm theo hướng dẫn trên YouTube và kết quả là với mã bên dưới. Mã này sẽ hiển thị một khối lập phương và một trục. Tuy nhiên, khi tôi cố gắng hiển thị trang chứa mã này, tôi gặp lỗi Javascript. Trạng thái lỗi:

Uncaught TypeError: this.updateMorphTargets is not a function

Tôi không chắc mình đã làm gì sai nhưng hy vọng rằng ai đó ở đây quen thuộc với THREE.js có thể giúp tôi. Cảm ơn rất nhiều vì thời gian của bạn.

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

Nhìn vào dấu vết ngăn xếp của lỗi. Dòng nào bắt nguồn từ? –

+0

Nó đến từ dòng 16927 trong ba.js khi cố gắng gọi this.updateMorphTargets(); – Emberdyn

+0

Đó có phải là nguồn gốc của dấu vết ngăn xếp không? Không có chức năng gọi điện thoại đó? –

Trả lời

11

Bạn thực hiện một typo đơn giản, quên các nhà điều hành new trước Three.MESH, vì vậy nó cần được:

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

Nhà điều hành new là một việc lớn, mà không có nó các THREE.Mesh không còn là một nhà xây dựng nhưng một hàm bình thường. Điều này làm cho hàm this bên trong hàm tham chiếu chính đối tượng vùng tên THREE, trái với đối tượng Mesh mới được tạo. Đối tượng không gian tên THREE không có phương thức updateMorphTarget(), do đó có lỗi.

+0

Bạn nói: "Đối tượng THREE không có phương thức updateMorphTarget()", nhưng bạn có nghĩa là đối tượng không gian tên BA. – nbro

+0

Rất đúng, từ ngữ hiện tại có thể gây nhầm lẫn. Tôi đã chỉnh sửa câu trả lời, cảm ơn! –

Các vấn đề liên quan