我有以下代码:
export class LandingPageComponent implements OnInit {
scene: THREE.Scene;
(...)
ngOnInit() {
(...)
this.scene = new THREE.Scene();
(...)
var loader = new THREE.JSONLoader();
loader.load("../../assets/fire_lion.json",function ( obj ) {
this.scene.add( obj ); // The line that's giving me trouble
});
场景已定义并正常工作,但是当我尝试运行此代码时,出现错误,表示未声明场景。这是有道理的,因为“this”不再引用类,但是如何将对象添加到场景呢?
提前致谢!
PS:使用ObjectLoader只是给我一条错误消息,说我应该使用JSONLoader。
答案 0 :(得分:2)
因为此负载回调已更改。需要调用bind或使用转换为绑定调用的TypeScript语法。
loader.load("../../assets/fire_lion.json",function ( obj ) {
this.scene.add( obj );
}.bind(this)); // bind here
或
loader.load("../../assets/fire_lion.json", ( obj ) => {
this.scene.add( obj );
}));