簡體   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