【问题标题】:Not looping through for loop - javascript不循环通过for循环 - javascript
【发布时间】:2015-05-21 22:40:07
【问题描述】:

以下代码中的 for 循环似乎没有被激活。

var updateMobs = function(){
    for (var b = 0; b < mobsBlue; b++){
        BM = mobsBlue[b]
        BM.x = BM.x - 1

        doCollision(BM, redBase, BM)
        doCollision(BM, debugPlayer, BM)
        console.log("draw1")
        BM.Draw(ctx, false)
    }
    for (var r = 0; r < mobsRed; r++){
        RM = mobsRed[r]
        RM.x = RM.x + 1

        doCollision(RM, blueBase, RM)   
        doCollision(RM, debugPlayer, RM)
        console.log("draw2")
        RM.Draw(ctx, false)
        for (var bb = 0; bb < mobsBlue; bb++){
            BM = mobsBlue[bb]
            console.log("draw3")
            BM.Draw(ctx, false)
            RM.Draw(ctx, false)
        }

    }

}

另外,如果您有任何改进,请随时评论我可以对我的代码做的任何改进,以使这项工作更好。我也知道我的 javascript 末尾没有分号,所以不要对此发表评论

我没有收到任何错误,并且 mobsBlue 和 mobsRed 都是数组。

另外,我正在循环调用这个函数。

我很抱歉冒犯了。这是不必要的,我应该回答这个问题:|。谢谢你帮助我

诚挚的歉意

【问题讨论】:

  • 这是一个函数。你必须调用它。
  • 另外,b &lt; mobsBlueBM = mobsBlue[b] 令人惊讶。 mobsBlue 是数字还是数组?
  • 阅读编辑过的问题
  • 你的意思是b &lt; mobsBlue.lengthr &lt; mobsRed.lengthbb &lt; mobsBlue.length吗?
  • 你犯的小错误使你有资格被问到你是否真的调用了这个函数。 (而且侮辱别人不太可能给你任何帮助)

标签: javascript loops for-loop


【解决方案1】:

由于这是一个函数,请务必使用updateMobs(); 调用它。

我相信 mobsBluemobsRed 是数组(因为您调用 mobsBlue[b] 并对其进行索引),所以对于您的 for 循环,您想要循环 for (var b = 0; b &lt; mobsBlue.length; b++){

这样:

var arr = [1, 2, 3, 4]
for(var i = 0;i < arr.length;i++){
    item = arr[i]
    alert(item)
}

这是您编辑的代码:

var updateMobs = function(){
    for (var b = 0; b < mobsBlue.length; b++){
        BM = mobsBlue[b]
        BM.x = BM.x - 1

        doCollision(BM, redBase, BM)
        doCollision(BM, debugPlayer, BM)
        console.log("draw1")
        BM.Draw(ctx, false)
    }
    for (var r = 0; r < mobsRed.length; r++){
        RM = mobsRed[r]
        RM.x = RM.x + 1

        doCollision(RM, blueBase, RM)   
        doCollision(RM, debugPlayer, RM)
        console.log("draw2")
        RM.Draw(ctx, false)
        for (var bb = 0; bb < mobsBlue.length; bb++){
            BM = mobsBlue[bb]
            console.log("draw3")
            BM.Draw(ctx, false)
            RM.Draw(ctx, false)
        }

    }

}

【讨论】:

    【解决方案2】:

    #1 将无法理解这个简单代码的人称为“迟钝”是非常冒犯的。

    #2您是否在其他代码的某处调用了 updateMobs 函数?

    #3 我假设 mobsBlue 是一个像 njzk2 所说的数组,也许你想得到它的长度?使用:

    for (var b = 0; b < mobsBlue.length; b++)
    

    对于 mobsRed 也是如此。

    【讨论】:

    • 我确实道歉了。对不起。
    • ^^ 有时我们都会在编码方面感到沮丧:D
    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多