【问题标题】:Aframe changing sky every intervalAframe每间隔改变天空
【发布时间】:2018-06-26 13:54:05
【问题描述】:

我尝试让我的 aframe-sky-component 每 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

【问题讨论】:

    标签: javascript timer intervals aframe sky


    【解决方案1】:

    每次调用nextImage 时,zahl 都会设置为 0。

    您可以将其移至外部范围:

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

    就像我做的here。现在它不会通过调用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
    }
    

    【讨论】:

    • P.S.出于学习目的,我建议您查看closures
    • thx 工作正常。你能告诉我如何让这个循环永远存在:)
    • Ps 你说得对,我应该学习更多 javascript 的基础知识,但是我学到了很多东西(一年前我对计算机一无所知)有人给了我一些有用的东西增加了我的动力,所以谢谢很多耶稣的框架
    • @Delidragon 嘿,我更新了,有一个错字(zahl == 0 而不是zahl = 0),现在应该循环播放。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多