Javascript循环数组时,网页冻结/崩溃

时间:2018-03-09 21:16:12

标签: javascript arrays crash

所以,正如标题所示,当我在数组中循环以在我的游戏中进行碰撞时,它会崩溃。让我给你一些更多的细节,当循环遍历数组时,我通过数组一次检查设置对象的碰撞,并使用另一个数组再次循环对象来进行碰撞。在一个非常具体的案例中,该网站将崩溃。当物体撞到一个角落并撞到两面墙时,网页就会停止。

以下是游戏的代码:

function RunPhysics()
{
//Move all objects
for(i=0; i<gameObjects.length; i++)
{
    var obj = gameObjects[i];
    SetObjectPos(obj, obj.xPos + obj.xForce, obj.yPos + obj.yForce);
}

//Check all objects against each other for collision.
var collidedObjects = [];
for(i=0; i<gameObjects.length; i++)
{
    var current = gameObjects[i];
    for(x=0; x<gameObjects.length; x++)
    {
        for(z=0; z<collidedObjects.length; z++)
        {
            --It crashes somewhere around here.
            if(collidedObjects[z] == gameObjects[i])
            {
                break;
            }
            else
            {
                continue;
            }
        }

每个对象都包含位置,当前力,颜色和碰撞类型。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以,感谢评论中的某些人,我明白了。这是一个行为不端的变量。 以下是我认为打破了这一切的代码。

for(i=0; i<gameObjects.length; i++)
{
    var obj = gameObjects[i];
    SetObjectPos(obj, obj.xPos + obj.xForce, obj.yPos + obj.yForce);
}

//Check all objects against each other for collision.
var collidedObjects = [];
for(i=0; i<gameObjects.length; i++)
{

以下是使其有效的更改。 (忽略被注释掉的collidedObjects数组)

for(var i=0; i<gameObjects.length; i++)
{
    var obj = gameObjects[i];
    SetObjectPos(obj, obj.xPos + obj.xForce, obj.yPos + obj.yForce);
}

//Check all objects against each other for collision.
//var collidedObjects = [];
for(var i=0; i<gameObjects.length; i++)
{

显然是因为有两个循环使用相同的变量,它导致了一些破坏。所以我只是定义了变量并且它有效!希望这可以帮助其他人找到这个:)