Typescript和ThreeJS,添加到loader中的场景

时间:2017-07-04 10:03:53

标签: typescript three.js

我有以下代码:

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。

1 个答案:

答案 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 );
}));