2013-03-23 77 views
0

我沒有更新我的系統中的three.js庫。今天,我更新了three.js文件。但是我遇到了這個錯誤:「Uncaught TypeError:Object#has no method'traverseHierarchy'」。Three.js SceneUtils沒有遍歷層次!它在哪裏?

我已經用它檢測路口: 在線代碼是在這裏:https://dl.dropbox.com/u/44791710/test/simple2.html

function Intersect(event) { 
    event.preventDefault(); 
    var mousex = (event.clientX/window.innerWidth) * 2 - 1; 
    var mousey = -(event.clientY/window.innerHeight) * 2 + 1; 
    var vector = new THREE.Vector3(mousex, mousey, 1); 

    var toIntersect = []; 
    THREE.SceneUtils.traverseHierarchy(scene, function (child) { 
     if (child instanceof THREE.Mesh) { 
      toIntersect.push(child); 
     } 
    }); 
    var projector = new THREE.Projector(); 
    projector.unprojectVector(vector, camera); 
    var ray = new THREE.Raycaster(camera.position,vector.sub(camera.position).normalize()); 
    var intersects = ray.intersectObjects(toIntersect); 
    if (intersects.length > 0) { 
     for (var j = 0; j < intersects.length ; j++){ 
       target = intersects[j].object; 
       console.log('Intersects at ' + mouse.x + '/' + mouse.y + ':'); 
       for(var i = 0, m = intersects.length; i<m; i++){ 
        console.log(intersects[i].object.id, intersects[i]); 
       } 
     } 
    } 
} 

我需要做什麼樣的變化? 謝謝。

+0

它被稱爲traverse()掛在Object3D上。 – gaitat 2013-03-23 07:25:31

+0

我是新手,並不明白你的意思!你能否詳細說明一下?!我檢查了THREE.SceneUtils和THREE.Object3D,但沒有任何遍歷()!謝謝。 – mbehnaam 2013-03-23 07:56:40

+0

如果您查看http://mrdoob.github.com/three.js/docs/57/#Reference/Core/Object3D上的文檔,您將在那裏看到traverse()函數作爲方法。 – gaitat 2013-03-23 08:37:01

回答

6

,就應該替換由scene.traverse(function (child) {scene.traverse(scene, function (child) {(我不能添加評論,所以我創建了一個答案,而不是)。

+0

非常感謝。問題解決了!!! – mbehnaam 2013-03-26 00:19:28

1

作爲Migration導向狀態,在R51 - > R52:

Replaced SceneUtils.traverseHierarchy with object.traverse.

object指任何THREE.Object3D實例,例如THREE.MeshTHREE.Scene。因此,而不是THREE.SceneUtils.traverseHierarchy,請嘗試scene.traverse

+0

我替換了THREE.SceneUtils.traverseHierarchy,BY scene.traverse。但是我得到了這個錯誤! Uncaught TypeError:對象不是一個函數!請看看這裏的在線代碼https://dl.dropbox.com/u/44791710/test/simple2.html非常感謝! – mbehnaam 2013-03-24 04:29:02

+0

@mbehnaam由於它是一個成員函數,所以不會將場景作爲參數傳遞,只能傳遞迴調。查看問題評論中鏈接的API文檔步驟。 – Tapio 2013-03-24 13:45:46

+0

謝謝Tapio ... – mbehnaam 2013-03-26 03:42:49