Невозможно изменить текстуры при нажатии кнопки в рамке - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь загрузить модель GLTF, чтобы изменить текстуру при нажатии кнопки с помощью компонента регистрации.Теперь я могу загрузить и отобразить модель, как и ожидалось.Тем не менее, я не могу отразить какие-либо изменения, когда кнопка нажата для изменения текстуры.

Вот что я пробовал

<div class=" radisi">
<input type='button' class='radmi rad1' value='next' /></div>

  <a-entity id="newmod" example gltf-model="src: url(model/straw.glb);"
              position="0 1.8 -1" scale="1,1,1"></a-entity>



    AFRAME.registerComponent('example', {

    init: function() {
    var el = this.el;
    el.addEventListener('model-loaded', function (e) {
    e.detail.model.traverse(function(child) {

        if (child instanceof THREE.Mesh){
             if (child.material.name == "Craem")  {
             material.map =   new THREE.TextureLoader().load( "assets/img/choco.png" );
                       }
                    }
                });
             })
          }
      },3000)

После регистрации компонента я пытаюсь получить доступ к изменению текстуры при нажатии

$(".radisi").click(function(){

var el = this.el;
        el.addEventListener('model-loaded', function (e) {
        e.detail.model.traverse(function(child) {

            if (child instanceof THREE.Mesh){
                 if (child.material.name == "Craem")  {
                 material.map =   new THREE.TextureLoader().load( "assets/img/tri.png" );
                           }
                        }
                    });
                 })
});

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

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Повторный вызов сетки. Это сработало для меня,

$(".radisi").click(function(){

let object  = el.getObject3D('mesh');

        object.traverse(function(child) {

            if (child instanceof THREE.Mesh)
                    {
                        if (child.material.name == "Craem")  {
                             child.material.map=new THREE.TextureLoader().load( "assets/img/strawberry.png" );;

                                }
                    }
            });
});
0 голосов
/ 11 мая 2018

Вы зарегистрировали компонент для ожидания загрузки модели и изменения материала.

Затем у вас есть прослушиватель щелчков, который снова ожидает загрузки модели, когда модель, вероятно, уже загружена к тому времени. И вы не можете сделать this.el в обработчике кликов на jQuery. this.el поставляется компонентом A-Frame.

Переместите прослушиватель щелчка в компонент и удалите прослушиватель model-loaded из прослушивателя щелчка.

...