Вопрос по загрузке 3d объекта в mounted vue js

Я не могу понять почему в load объект с данными animated = undefined. Я так же пытался реализовать функции init и animate в methods и исполнять их в load, но они так же были undefined. Задача заключается в том, что когда экземпляр готов, я загружаю мой 3d объект и добавляю его на сцену. После чего анимирую его и меняю флаг animated на true. В чем заключается проблема? Снизу в коде я закомментировал когда animated = false (то, что мне нужно), а когда undefined. И ещё: 3д объект находится в папке public.

Код:

export default {
  name: 'app',
  components: {
   
  },
  data() {
    return {
      animated: false
    }
  },
  mounted() {
    let loader = new GLTFLoader();
    
    console.log(this.animated) //false

    loader.load(
    '/threeAssets/obj.gltf',
    function (gltf) {
      gltf.scene.traverse(function (child) {
        if (child.isMesh) {
          object = child;
        }
      })
      console.log(this.animated) //undefined
      init();
      animate();
    });

    function init() {
      ...
    }

    function animate() {
      ...
    }

  }


Ответы (1 шт):

Автор решения: Евгений Платов

попробуйте так

function (gltf) {
  gltf.scene.traverse(function (child) {
    if (child.isMesh) {
      object = child;
    }
  })
  console.log(this.animated) //undefined
  init();
  animate();
}.bind(this));
→ Ссылка