Проблема в автовоспроизведении анимации, которую я хочу отключить в самом начале.

Я подумал, почему бы не начать это предложение

AFRAME.registerComponent('track1', { <

Код становится запутанным, и я пытаюсь понять обе функции "remove" и "play" на #track1.

Нажатие на кнопку "animate button" устанавливает функцию 'play' на #track1.

Код 'triggers:a-curve-point' в файле aframe-along-component.js всегда запускает анимацию, как только устанавливается кривая, например #track1.

AFRAME.registerComponent('alongpath', {

//dependencies: ['curve'],

schema: {
    curve: {default: ''},
    triggers: {default: 'a-curve-point'},
    triggerRadius: {type: 'number', default: 0.01},
    dur: {default: 1000},
    delay: {default: 0},
    loop: {default: false},
    rotate: {default: false},
    resetonplay: {default:true}
},

init: function () { <

Ссылка на Глюк

Tomas Maldonis

Ответов: 1

Ответы (1)

Хотя было бы лучше расширить компонент alongpath с некоторым управлением потоком, вы можете добиться функциональности play / stop / reset без него.

  • добавьте компонент динамически, чтобы имитировать play()

  • вызовите его метод .reset(), чтобы сбросить анимацию:

    AFRAME.registerComponent("track1", {
      init: function() {
        var box = document.querySelector("a-box");
        document.querySelector(".enter").addEventListener("click", e => {
    
          if (box.components.alongpath) {
            // если компонент прикреплен - сброс
            box.components.alongpath.reset();
          } else {
            // иначе прикрепите его
            box.setAttribute("alongpath", "curve", "#track1");
          }
        });
      }
    });
    

Посмотрите здесь (нажмите на рыбу, чтобы увидеть источник).

2022 WebDevInsider