【问题标题】:Why is my loop in JavaScript only returning the last value?为什么我在 JavaScript 中的循环只返回最后一个值?
【发布时间】:2019-11-28 20:06:57
【问题描述】:

背景

我正在使用 HTML/JavaScript 制作一个简单的 2D side-scroller game,并使用 ES6 来管理我的游戏对象。

代码设计

我有 2 个每个级别平台的数组要跟踪:

  • shortPlatform
  • longPlatform

对于每个平台,都有一个单独的循环来检查玩家对象和相应平台之间的冲突 .

但是,循环只允许与最后一个平台发生冲突。


这是我的两个循环的代码:

                for (let i = 0; i < shortPlatform.length; i++) 
                {
                    shortPlatform[i].renderObject();

                    // check if collide with players
                    var dir = colCheck(player, shortPlatform[i]);
                }

                for (let x = 0; x < longPlatform.length; x++) 
                {
                    longPlatform[x].renderObject();

                    // check if collide with players
                    var dir2 = colCheck(player, longPlatform[x]);
                };

注意

我在这里阅读了许多关于闭包的其他答案,但似乎无法让任何解决方案发挥作用。

【问题讨论】:

  • dir 和 dir2 在循环的每个步骤中都被覆盖。您可能希望使用数组或列表来存储这些值

标签: javascript arrays loops


【解决方案1】:

变量dirdir2for 循环的本地变量。结果,每次循环迭代时它都会被覆盖。尝试使用数组来存储碰撞的发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2015-01-23
    相关资源
    最近更新 更多