ThreeJS / Angular - & ldquo; сцена не определена & rdquo;

Вы можете просто разделить интерфейс и бэкэнд. Интерфейс размещен на сервере клиентов с API, который вызывает вызовы на сервер на вашем сервере. Это удерживает весь собственный проприетарный код и заставляет пользователей подписывать / оплачивать подписки.

1
задан gman 15 January 2019 в 23:59
поделиться

1 ответ

Это потому, что this в функции обратного вызова из objLoader.load относится к функции onload, а не к экземпляру класса.

Один из способов решить эту проблему - создать экземпляр this в переменной в функции createScene, а затем использовать эту переменную вместо этой в функции загрузки:

createScene(elementId: string): void {
    let me = this;
    ...

    objLoader.load(
      // resource URL
      'helicopter.obj',
     // called when resource is loaded
     function ( object ) {
        console.log(object);
        object.position.y -= 60;

        me.scene.add( object );

     },
  ...
  );
}

Другой способ будет использовать функцию стрелки, где this будет ссылаться на класс ItemsCatalogComponent:

objLoader.load(
  // resource URL
  'helicopter.obj',
  // called when resource is loaded
  ( object ) => {
    console.log(object);
    object.position.y -= 60;

   this.scene.add( object );

  },
  // called when loading is in progresses
  ( xhr ) => {

    console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );

  },
  // called when loading has errors
  ( error ) => {

    console.log( 'An error happened' );

  }
);

Надеюсь, что поможет.

0
ответ дан Milo 15 January 2019 в 23:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: