繁体   English   中英

游戏中的javascript精灵动画

[英]javascript sprite animation in a game

我正在一个小型Javascript游戏中制作精灵的简单动画,一种蚊子在向右飞行时会改变状态。 这些状态对应于我的磁贴纸中的两个不同图像。

到目前为止,我一直在这样做,但是动画非常不规则:

for (var i = 0; i < mosquitos.length; i++) {
  var mosquito = mosquitos[i];

  setInterval (updateAnimation, 500);
  mosquito.update();

  // rest of code non-relevant to animation here...

然后,稍后:

function updateAnimation () {
  next();

  function next () {
    mosquito.state = mosquito.FLYINGRIGHT1;
    setTimeout (previous, 500);

    function previous () {
      mosquito.state = mosquito.FLYINGRIGHT;
    }
  }
}

这两个状态当然是FLYINGRIGHT和FLYINGRIGHT1 ...问题是蚊子开始非常快速,非常不规则地活动。 我希望它更改状态,即每半秒更改一次。 我尝试了不同的时间段,但效果始终相同。

如果我所缺少的不是那么明显,我可以对整个事情做个简单的描述。

感谢您的帮助和见解。

这是我网站上的游戏:

http://www.retroinvaders.net/laurasworld/src/laurasTriviaLevels.html

我认为您应该重新考虑这一部分:

var mosquito = mosquitos[i];
setInterval (updateAnimation, 500);

我想您希望每个新的“ updateAnimation”都获得不同的蚊子(mosquitos [0],mosquitos [1] .. mosquitos [i])。 但是真正发生的事情却有所不同。 每次您得到相同的蚊子(mosquitos [i])。 这是因为setInterval()函数的异步行为。

function updateAnimation () {
  next();

  function next() {
           // every time, mosquito is equal to mosquitos[i]
           // and NOT mosquitos[0], then mosquitos[1] ...
           mosquito.state = mosquito.FLYINGRIGHT1;
           setTimeout (previous, 500);

          function previous()
                  {
                       mosquito.state = mosquito.FLYINGRIGHT;

                  }

      }
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM