Кадр меняет небо каждый интервал - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь, чтобы мой компонент aframe-sky изменял его изображение каждые 3 секунды, но он не работает. Вот что я кодировал до сих пор:

 <script type = "text/javascript">
   function startTimer(){
  setInterval(function(){ nextimage(); }, 3000);

   function nextimage() {
     var zahl = 0;

     if (zahl == 0) {
       $("#skyid").attr("src","#sky_2");
       zahl ++;
     }
     if (zahl == 1) {
       $("#skyid").attr("src","#sky_3");  
       zahl ++;
     }
     if (zahl == 2) {
       $("#skyid").attr("src","#sky_4");  
       zahl ++;
     }
     if (zahl == 3) {
       $("#skyid").attr("src","#sky_1"); 
       zahl ++;
     }
     if (zahl == 4) {
       zahl == 0;
     }
     }
   }
  </script>   

Полагаю, у меня есть логические ошибки, спасибо за помощь: D

1 Ответ

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

Каждый раз, когда вы звоните nextImage, zahl устанавливается на 0.

Вы можете просто переместить его во внешнюю область:

function startTimer(){
  setInterval(function(){ nextimage(); }, 3000);
  var zahl = 0;
  function nextimage() {
  ....

как и я здесь . Теперь он не обнуляется путем вызова nextImage(), поэтому он действует как счетчик.


Также я думаю, что более элегантное решение - использовать массив цветов:

var colors = ["blue", "red", "green", "yellow"]
function nextimage() {
  $("#skyid").attr("color", colors[zahl])
  zahl = (zahl < colors.length - 1) ? ++zahl : 0 
  //zahl is incremented until its reached the end of the array
}
...