#javascript #aframe #webvr
#javascript #aframe #webvr
Вопрос:
Я создаю проект A-Frame, в котором я должен установить 3D-объект для объекта во время выполнения на основе пользовательского ввода. Есть ли способ использовать типы селекторов для его установки?
Пример:
AFRAME.registerComponent('model',{
schema:{
ext: {type: 'string', default:'gltf'},
scene:{type: 'selector'},
material:{type: 'selector'},
scale:{type: 'string', default: '1 1 1'}
},
init: function (){
var el = this.el;
var data = this.data;
if(data.ext == 'obj')
{
el.setAttribute('obj-model','obj',data.scene);
el.setAttribute('obj-model','mtl',data.material);
}
else
el.setAttribute('gltf-model',data.scene);
el.setAttribute('scale',data.scale);
console.log(this.el.toString() ': Model component registered successfully!');
}
});
Установив его с помощью идентификатора элемента, он не работает, но если я введу идентификатор вручную в HTML-документе, он будет работать отлично.
Комментарии:
1. Я чувствую, что нам все еще не хватает некоторой информации
2. Если вы поделитесь полным работоспособным примером, вам будет легче помочь. Сбой отличный glitch.com /~рамка
3. Конечно! Я создал простой пример сбоя, чтобы показать компонент. Вот ссылка на него: glitch.com /~модель-компонент-пример
Ответ №1:
Компоненты gltf-model и obj-model принимают не элементы DOM, а URL-адреса или селекторы. Передайте селектор прямо в модель
AFRAME.registerComponent('model',{
schema:{
ext: {type: 'string', default:'gltf'},
scene:{type: 'string' },
material:{type: 'string'},
scale:{type: 'string', default: '1 1 1'}
}