Ich kann OrbitControls nicht in meiner Angular2-Anwendung verwenden. Es ist mir gelungen, eine Szene mit einer Box anzuzeigen, aber ich kann die Kamera nicht bewegen.OrbitControls in Angular2 und Three.js nicht definiert
Ich entdeckte, dass meine OrbitComponent (die Orbit-Steuerelemente definiert) einen undefined
Wert zurückgibt.
orbit.component.ts
import { Directive, Input } from '@angular/core';
import * as THREE from 'three';
import { OrbitControls } from 'three-orbit-controls';
@Directive({ selector: 'three-orbit-controls' })
export class OrbitControlsComponent {
@Input() enabled: boolean = true;
controls: OrbitControls;
ngOnInit() {
console.log("hello");
}
setupControls(camera, renderer) {
this.controls = new OrbitControls(camera, renderer.domElement);
this.controls.enabled = this.enabled;
}
updateControls(scene, camera) {
this.controls.update();
}
}
renderer.component.ts
import { Directive, ElementRef, Input, ContentChild, ViewChild } from '@angular/core';
import * as THREE from 'three';
import { OrbitControlsComponent } from './controls/orbit.component';
@Directive({ selector: 'three-renderer' })
export class RendererComponent {
@ContentChild(OrbitControlsComponent) orbitComponent: OrbitControlsComponent;
constructor(private element: ElementRef) { }
ngAfterContentInit() {
console.log("orbitComponent undefined?", this.orbitComponent === undefined);
// TODO: OrbitControls is NULL!
if (this.orbitComponent) {
this.orbitComponent.setupControls(this.camera, this.renderer);
}
this.render();
}
}
Wie kann ich wieder ein OrbitComponent Objekt?
Das Anzeigen der Szene funktioniert für mich, ich habe Probleme, eine OrbitControlComponent in die Szene zu injizieren. – Tony
Entschuldigung für meine Antwort auf Verspätung. Könnten Sie mir mehr Informationen geben? Der Prozess sollte identisch sein: Tag in der HTML- und @ViewChild in Ihrer SceneComponent-TS-Datei. Vergessen Sie nicht, in Ihrem Modul Ihre OrbitControlComponent zu deklarieren! –