保持函数在条件下执行

时间:2015-02-14 18:10:58

标签: javascript

我在使用javascript的游戏中遇到了问题:

我有一个寻路算法,它保存在从起始点到目的地的数组位置。一个div必须遵循这些位置,并且我有一个与此div关联的图像,必须遵循它。 问题是div对于图像来说移动得太快,所以它的位置不好。

我正在寻找一种方法来对这个div说,如果图像没有到达那个div位置,那么div不能立即采取下一个位置,它必须等待。

我写了这个:

if (!(destX == player.x && destY == player.y)) {
        var path = grid.find(player.x / 40, player.y / 40, destX / 40, destY / 40);

        for (var i = 0; i < path.length; i++) {
            // If the image has arrived to the div position, function continue
            if (player.image.x == player.x && player.image.y == player.y) {
                player.x = path[i].position.x * 40; 
                player.y = path[i].position.y * 40;
            }
        }
    }

...但是它无法正常工作,因为当条件不匹配时,for循环会转到下一个&#39; i&#39;索引......

感谢您的帮助!

编辑:我会做一些精确的,函数在更新循环中:

Player.prototype.getMouseMove = function() {

$(".tile, .target").mouseup(function() {
    var destX = Math.round($(this).position().left);
    var destY = Math.round($(this).position().top);

    if (!(destX == player.x && destY == player.y)) {
        var path = grid.find(player.x / 40, player.y / 40, destX / 40, destY / 40);

        for (var i = 0; i < path.length; i++) {
            console.log(i); 
            if (player.image.x == player.x && player.image.y == player.y) {
                player.x = path[i].position.x * 40; 
                player.y = path[i].position.y * 40;
            }
            else i--;
        }
    }
});

}

1 个答案:

答案 0 :(得分:1)

稍微修改一下

 for (var i = 0; i < path.length; i++) {
            // If the image has arrived to the div position, function continue
            if (player.image.x == player.x && player.image.y == player.y) {
                player.x = path[i].position.x * 40; 
                player.y = path[i].position.y * 40;
            }
            else i--; // It wont increase your i if condition is not satisfied.
 }