[英]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.