Javascript 游戏';s split函数仅在第一次之后工作

Javascript 游戏';s split函数仅在第一次之后工作,javascript,html,canvas,Javascript,Html,Canvas,正在重新创建Agar.io的拆分函数,它几乎可以正常工作,但只在第二次。。。(以及之后)。片段: Player.prototype.split() 过早确定len变量 var len = this.cells.length; ... this.cells.push(new Player(...)); for (var i = 0; i < len; i++) { ... } var len=this.cells.length; ... 这个.cells.push(新玩家(…);

正在重新创建Agar.io的拆分函数,它几乎可以正常工作,但只在第二次。。。(以及之后)。片段:

Player.prototype.split()


过早确定
len
变量

var len = this.cells.length;
...
this.cells.push(new Player(...));
for (var i = 0; i < len; i++) {
    ...
}
var len=this.cells.length;
...
这个.cells.push(新玩家(…);
对于(变量i=0;i
因此,在第一次单击时不会进入循环


我不能完全确定所需的行为,但您也可能过早地将初始半径减半(应该在推后,因为它在循环中再次减半?)。

不,将len向下移动会进一步破坏代码。不过我想起来了——我忘了加速基地生成的新电池。很高兴你把它整理好了!您可以删除此问题,因为它涉及一个非常具体的编程故障,不太可能对未来的SO观众有所帮助。:-)我本来打算这么做的,但系统不鼓励我,因为有一个答案,它可能会阻止我的帐户提问,所以…我怀疑你会因为删除一个问题而被阻止。;-)不,但如果你做了太多次,你会的,我已经连续做了两次,所以不要冒险。此外,不说也没什么坏处。
accelerate: function() {
    var self = this;
    (function accelerate() {
        self.x += self.accelX;
        self.accelX *= 0.99;
        requestAnimationFrame(accelerate);
     }());
}
var len = this.cells.length;
...
this.cells.push(new Player(...));
for (var i = 0; i < len; i++) {
    ...
}