0
我無法讓我的Angular2應用程序中的OrbitControls工作。我成功地用盒子顯示場景,但是我無法移動相機。OrbitControls在Angular2和Three.js中未定義
我發現我的OrbitComponent(它定義了軌道控件)正在返回一個undefined
值。
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();
}
}
我怎樣才能返回OrbitComponent對象?
顯示場景適用於我,我無法將OrbitControlComponent注入到場景中。 – Tony
對不起,我遲到的答案。你能給我更多的信息嗎?該過程應該是相同的:在HTML中的標記和在SceneComponent ts文件中的@ViewChild。不要忘記在你的模塊中聲明你的OrbitControlComponent! –