setAttribute для атрибута компонента анимации 'to', использующего позицию, не может быть установлен - PullRequest
0 голосов
/ 13 июня 2019

Я использую A-Frame (webVR), чтобы сделать мультипанорамы. В мире есть несколько 3d кнопок (с сферическими панорамами в каждой позиции кнопки). Вы нажимаете кнопку, и компонент анимации перемещает камеру из ее текущего местоположения в местоположение кнопки. Пользовательский компонент, содержащий прослушиватель (для событий щелчка по кнопкам), использует setAttribute для установки атрибутов «до» и «из» компонента анимации на камере. Команда emit запускает анимацию. К сожалению, это терпит неудачу, и я вижу, что атрибут «from» установлен неправильно (он устанавливается так же, как «to»). Он не выдает ошибок, но я вижу в консоли, что from не будет установлен, хотя я установил его явно.

Я уже работал в предыдущей версии. Вы можете увидеть и проверить это здесь: https://glitch.com/~camera-jumper

В этой версии я не устанавливаю атрибут from, и он по-прежнему работает нормально, возможно потому, что он принимает предыдущее значение по умолчанию.

Тогда я встроил некоторые другие функции, и теперь он не работает. Вы можете увидеть текущую версию здесь: https://glitch.com/~panojumper

AFRAME.registerComponent('buttoncontrol', { 
    schema: {
        pano:{type:'string',default: 'pSphere1'} 
    },  
    init: function(){   
        var el = this.el;       
        var cam = document.querySelector('#camera'); 
        var panoManEntity = document.querySelector('#panoMan'); 
        var panoName = this.data.pano;
        console.log(cam.getAttribute('animation__jump', 'to'));
        this.el.addEventListener('click', function(evt){

            // Animate the camera moving to the button position
            var btnpos = el.getAttribute('position'); 
            var cam = document.querySelector('#camera');
            var campos = cam.getAttribute('position');              

            cam.setAttribute('animation__jump','to', {x: btnpos.x, y: 
              btnpos.y, z: btnpos.z });             
            cam.setAttribute('animation__jump','from', {x: campos.x, y: 
              campos.y, z: campos.z });     
            cam.emit('camjump');
        }); 
    }
});

Я ожидаю, что setAttribute для 'from' будет тем, для чего я его устанавливаю, но оно совпадает со значением 'to'.

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Ты прибил это! Пользовательские компоненты должны быть не в сцене, а в голове. Я переместил его, потому что мой тег актива был перед тегом сцены, что вызвало ошибку, поэтому я переместил тег сцены слишком далеко на север. Перемещение тега сцены ниже registerComponents решило эту проблему. Все это есть в документах, но я нуб. Спасибо за вашу помощь!

0 голосов
/ 13 июня 2019

Установка атрибута from, кажется, работает, вы можете проверить это, изменив свой первый сбой. Добавьте атрибут from, и он все еще работает правильно:

var campos = cam.getAttribute('position')
// Animate the camera moving to the button position
cam.setAttribute('animation__jump','to', {x: btnpos.x, y: btnpos.y, z: btnpos.z });
cam.setAttribute('animation__jump','from', {x: campos.x, y: campos.y, z: campos.z });   

скрипка здесь .


Другой сбой также будет работать, если вы зарегистрируете пользовательские компоненты в <head> или, по крайней мере, до <a-scene>. Об этом также имеется примечание в документах .

скрипка здесь .

...