繁体   English   中英

动画中的Javascript数组拼接

[英]Javascript array splice in animation

我目前正在使用画布上的地图生成器。

这是代码工作代码: http//jsfiddle.net/RtPmm/

提出问题的那篇文章:

MapBuilder = function(){
...
this.checkPath = function(){
...
(logic condition ...)    {
  var i = Game.builders.indexOf(this);
  Game.builders.splice(i,1); /!\
}

并在渲染功能:

for (var i = 0, len = Game.builders.length; i < len; i++) {
  Game.builders[i].checkPath();
}

我的问题是,当我的MapBuilder对象应该从数组中删除时,animateloop函数在迭代通过游戏编译器数组时仍然会找到已删除的索引。

我真的找不到这个......

感谢您抽出时间留下答案(或评论)

好吧,这是因为你循环直到达到数组的初始长度,但是当你删除项目并且项目被移动时,长度会改变。

这个问题有几种解决方案,比如反向循环,或类似:

var builders = Game.builders,
    builder;
for (var i = 0, len = builders.length; i < len; i++) {
   (builder = builders[i]).checkPath();
   if (builders[i] !== builder) {
       //builder was removed, fix the loop
       --i; --len;
   }
}

暂无
暂无

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

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