Javascript / Jquery переключение между объектами с событием - PullRequest
0 голосов
/ 06 июня 2018

У меня есть aframe-сцена с двумя стрелками и некоторыми объектами, и я пытаюсь переключаться между объектами, но я не понимаю, как мне нужна помощь, вот что я получил:

  AFRAME.registerComponent("fool", {
    init: function() {
        var boxarray = ["#bluebox, #yellowbox, #greenbox]

        boxarray[0] = true;

        if(boxarray[0] = true){
          document.getElementById('bluebox').setAttribute('visible', 'true');
          document.getElementById('bluebox').setAttribute('scale', {x:1,y:1,z:1});
        } else {
          document.getElementById('bluebox').setAttribute('visible', 'false');
          document.getElementById('bluebox').setAttribute('scale', {x:0,y:0,z:0});
        }

        if(boxarray[1] = true){
          document.getElementById('bluebox').setAttribute('visible', 'true');
          document.getElementById('bluebox').setAttribute('scale', {x:1,y:1,z:1});
        } else {
          document.getElementById('bluebox').setAttribute('visible', 'false');
          document.getElementById('bluebox').setAttribute('scale', {x:0,y:0,z:0});
        }

        if(boxarray[2] = true){
          document.getElementById('bluebox').setAttribute('visible', 'true');
          document.getElementById('bluebox').setAttribute('scale', {x:1,y:1,z:1});
        } else {
          document.getElementById('bluebox').setAttribute('visible', 'false');
          document.getElementById('bluebox').setAttribute('scale', {x:0,y:0,z:0});
        }

      function toggleright(){
?help?
      }

      function toggleleft(){
?help?
      }
      })

Iпопробуй дать всем моим объектам (ящикам) событие, чтобы изменение источника было просто полезно, если событие тоже меняется

1 Ответ

0 голосов
/ 06 июня 2018

Как насчет наличия одного метода, который будет переключать видимую «следующую» сущность, и «предыдущей» невидимой.

Таким образом, ваш левый / правый метод будет определять только тот, который должен быть следующим, и использоватьпереключающая функция.

Это можно сделать с помощью такого компонента:

AFRAME.registerComponent("foo", {
 init: function() {
  this.objects = ["one", "two", "three"]
  this.iterator = 0
  this.left = AFRAME.utils.bind(this.left, this);
  this.right = AFRAME.utils.bind(this.right, this);
 },
 right: function() {
  let i = (this.iterator - 1) < 0 ? this.objects.length - 1 : this.iterator - 1
  this.toggle(this.iterator, i)
 },
 left: function() {
  let i = (this.iterator + 1) >= this.objects.length ? 0 : this.iterator + 1
  this.toggle(this.iterator, i)
 },
 toggle: function(oldEl, newEl) {
  document.getElementById(this.objects[oldEl]).setAttribute("visible", "false")
  document.getElementById(this.objects[newEl]).setAttribute("visible", "true")
  this.iterator = newEl
 }
})

Методы right и left проверяют только то, что мы не достигли начала /конец массива и вызовите метод toggle, который переключает видимость.

Live fiddle здесь .

...