3. js + OrbitControls - Uncaught TypeError: невозможно прочитать свойство addEventListener из undefined - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь использовать OrbitControls в ТРИ. js. Если убрать снизу строчку let cameraControl = new OrbitControls(camera), ошибки не будет. Но теперь у меня есть «Uncaught TypeError: Cannot read property 'addEventListener' of undefined»

Я попытался изменить OrbitControls(camera) на THREE.OrbitControls(camera), а затем у меня было «Uncaught TypeError: THREE.OrbitControls не является constructor ".

Я пытался импортировать OrbitControls.js, используя <script src=...></script> за пределами "module", вместо import {OrbitControls} from ...;, но это не сработало, я также пытался переместить let cameraControl = new OrbitControls(camera) в другие строки , но тоже не работает.

Есть идеи, как исправить?


<body>

<script type="module">
import * as THREE from 'https://threejsfundamentals.org/threejs/resources/threejs/r115/build/three.module.js';
import {OrbitControls} from 'https://threejsfundamentals.org/threejs/resources/threejs/r115/examples/jsm/controls/OrbitControls.js';


let scene, renderer, camera
let cube

function init() {

  scene = new THREE.Scene()
  renderer = new THREE.WebGLRenderer()
  renderer.setSize(window.innerWidth, window.innerHeight)
  document.body.appendChild(renderer.domElement)

  camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 100)

  let cameraControl = new OrbitControls(camera)

  camera.position.set(10, 10, 10)
  camera.lookAt(scene.position)

  // cube
  cube = new THREE.Mesh(new THREE.BoxGeometry(1, 1, 1))
  scene.add(cube)

}

function render() {
  requestAnimationFrame(render)
  renderer.render(scene, camera)
}

init()
render()

</script>
</body>

1 Ответ

1 голос
/ 05 августа 2020

let cameraControl = new OrbitControls (camera)

Всегда создавайте элементы управления следующим образом:

let cameraControl = new OrbitControls(camera, renderer.domElement);

Второй параметр теперь является обязательным.

...